2014-11-25 9 views
5

Von dem, was ich im Internet gelesen habe, wird die admin_init vor admin_men ausgelöst, stimmt das?Was WordPress Hook zuerst auslöst admin_init oder admin_menu

Ich habe eine Plugin-Vorlage gemacht, um dies zu testen und finde es nicht der Fall.

Der Testcode ist unten. Die Ausgabe erhalte ich bei der Aktivierung der Plug-in ist ...

2 

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

Beachten Sie die Nummer 2 in der Ausgabe oben, es ist Ausgabe von der Funktion admin_menu().

/* 
    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')); 

Antwort

8

admin_menuvoradmin_init zu Feuer scheint, hier ist was passiert:

  • admin_menu Brände in wp-admin/includes/menu.php auf line 149
  • , die am Ende des wp-admin/menu.php auf line 255
  • enthalten ist, das ist enthalten in wp-admin/admin.php auf line 115
  • wonach admin_init Brände in derselben Datei auf line 145
+0

Warum ist nicht die Ausgabe –

+0

Sie erhalten '2', weil 'admin_menu' Feuer zuerst .. – diggy