如何在插件激活时添加自定义菜单项?

时间:2012-08-12 作者:Misha Moroshko

当我的插件被激活时,我想添加一个新的菜单项。这是我的代码:

class My_Plugin {
  function __construct() {
    register_activation_hook(__FILE__, array($this, \'install\'));
  }

  function install() {
    add_action(\'admin_menu\', array($this, \'add_menu_item\'));
  }

  public function add_menu_item() {
    add_menu_page(...);
  }
}

$my_plugin = new My_Plugin();
不幸的是,它不起作用。我注意到install 被调用,但是add_menu_item 不是。

这样做的正确方法是什么?

1 个回复
最合适的回答,由SO网友:Milo 整理而成

插件在沙盒中激活,并捕获其输出以检查错误,如果激活成功,则重定向。在激活挂钩中添加一些内容将导致它在激活时在“不可见”沙盒中运行一次,仅此而已。

添加操作时,您只需为该请求添加操作,如果希望菜单项在每次管理页面加载时都可见,则add_action 应移至__construct 作用

结束

相关推荐

调试寄存器_ACTIVATION_HOOK()

我很好奇WordPress或PHP是否存在已知的问题,环境可能会退化到WordPress忽略register\\u activation\\u hook()调用的程度。我在运行MAMP的本地环境中紧张地工作了一个小时,这时我让一位同事在她的机器上测试代码;完全相同的代码在一台机器上工作,但在另一台机器上不工作。在本例中,我只是想将消息附加到日志文件中,我正在实时跟踪该日志文件。error_log(\"Plugin code is being processed\"); register_