Welcher WordPress-Hook feuert zuerst admin_init oder admin_menu

Lesezeit: 3 Minuten

Nach dem, was ich im Internet gelesen habe, wird die admin_init vor admin_menu ausgelöst, ist das wahr?

Ich habe eine Plugin-Vorlage erstellt, um dies zu testen, und finde, dass dies nicht der Fall ist.

Der Testcode ist unten. Die Ausgabe, die ich bekomme, wenn ich das Plugin aktiviere, ist …

2

pt\singelton Object
(
    [page] => pt
    [page_title] => Page Title
    [menu_title] => Menu Title
    [capability] => manage_options
)

Beachten Sie die Zahl 2 in der obigen Ausgabe, sie wird von der Funktion admin_menu() ausgegeben.

/*
  License: GPL
  Version: 0.01
  Plugin Name: Plugin Template.
  Plugin URI: http://www.dyncomp.net/plugins/plugin-template/
  Description: Plugin Template.
  Author: Dan Huckson
  Author URI: http://www.dyncomp.net
  Text Domain: pt
  Domain Path: /lang/
 */

namespace pt;

class obj {
    private $instance;

    // Activate
    static function activate() {
        $page = __NAMESPACE__;

        if (!($opt = get_option($page)))
            add_option($page, (object) array('page' => $page, 'in_date' => getdate()));
        else if (!isset ($opt->page) || $opt->page !== $page) 
            wp_die('Error: Option ('.$page.') already exsits in database, the plugin can not be activated.');
    }

    // Setup
    function __construct(&$instance) {
        $this->instance = $instance;
    }

    function admin_init() {
        wp_die('1</br><pre>'.print_r($this->instance, TRUE).'</pre>');
    }

    function admin_menu() {
        wp_die('2<br><pre>'.print_r($this->instance, TRUE).'</pre>',2);
    }
}

class singelton {
    static private $instance;

    public static function getInstance($args) {
        $page = $args['page'];
        if (!isset(self::$instance->$page)) {
            self::$instance->$page = new static();
            self::$instance->$page->page = $page;
            self::$instance->$page->page_title = $args['page_title'];
            self::$instance->$page->menu_title = $args['menu_title'];
            self::$instance->$page->capability = $args['capability'];
        }
        return self::$instance->$page;
    }
    private function __clone() {}
    private function __wakeup() {}  
    protected function __construct() {}
} 

$page = __NAMESPACE__;
$instance[$page] = new obj(singelton::getInstance(array(
    'page' => $page, 
    'page_title' => 'Page Title', 
    'menu_title' => 'Menu Title',
    'capability' => 'manage_options',
    'content_icon' =>  'dashicons dashicons-editor-kitchensink'
)));
add_action('admin_init', array($instance[$page], 'admin_init'));
add_action('admin_menu', array($instance[$page], 'admin_menu'));
register_activation_hook( __FILE__, array($instance[$page], 'activate'));

admin_menu scheint zu feuern Vor admin_initFolgendes passiert:

  • admin_menu Feuer ein wp-admin/includes/menu.php an Zeile 149
  • die am Ende enthalten ist wp-admin/menu.php an Zeile 255
  • der darin enthalten ist wp-admin/admin.php an Zeile 115
  • nachdem admin_init feuert in derselben Datei auf Zeile 145

  • Warum ist dann nicht die Ausgabe

    – Daniel Huckson

    25. November 2014 um 22:54 Uhr

  • Hier die Referenz im WP-Codex: [admin_init] darf nicht in einer admin_init-Aktionsfunktion platziert werden, da die admin_init-Aktion nach admin_menu aufgerufen wird. codex.wordpress.org/Plugin_API/Action_Reference/admin_menu

    – Nebel

    25. Juni 2018 um 17:54 Uhr


  • auch der folgende Code, add_action('admin_init', function(){ echo 'admin_init->'; }); add_action('admin_menu', function(){ echo 'admin_menu->'; });ergibt admin_menu->admin_init->.

    – Artjom

    30. März um 2:37 Uhr

  • Jetzt sind Sie fündig geworden admin_init Haken an wp-admin/admin.php [on line 175] core.trac.wordpress.org/browser/tags/6.0/src/wp-admin/…

    – Ibnul Hasan

    27. Mai um 4:11 Uhr


WordPress selbst aktualisiert sein Ökosystem von Hooks im Laufe der Zeit. Verwenden Sie besser dieses Plugin Eine weitere Show Hooks Das bietet Ihnen die Echtzeit-Hook-Feuersequenz, die Sie selbst finden können!

Geben Sie hier die Bildbeschreibung ein

1382970cookie-checkWelcher WordPress-Hook feuert zuerst admin_init oder admin_menu

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy