gpt4 book ai didi

php - 什么 Wordpress Hook 首先触发 admin_init 或 admin_menu

转载 作者:可可西里 更新时间:2023-11-01 13:13:12 24 4
gpt4 key购买 nike

根据我在互联网上读到的信息,admin_init 在 admin_menu 之前触发,这是真的吗?

我做了一个插件模板来测试这个,发现不是这样。

测试代码如下。激活插件时我得到的输出是......

2

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

注意上面输出中的数字 2,它是函数 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'));

最佳答案

admin_menu 似乎在 admin_init 之前触发,这是发生的事情:

  • admin_menuwp-admin/includes/menu.php 中触发 line 149
  • 包含在 wp-admin/menu.php 的末尾 line 255
  • 包含在 line 115 上的 wp-admin/admin.php
  • 之后 admin_initline 145 上的同一个文件中触发

关于php - 什么 Wordpress Hook 首先触发 admin_init 或 admin_menu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27137866/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com