WordPress和调用未定义的函数add_menu_page()

Gaz*_*ion 18 php wordpress wordpress-plugin

我最近进入了WordPress插件开发,我想添加一个菜单页面(左侧菜单中的链接).以前的SO问题和WordPress编解码器说它就像调用一样简单:

add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $function, $icon_url, $position );
Run Code Online (Sandbox Code Playgroud)

但是当我在我的插件设置文件中尝试这个时,它告诉我该函数是未定义的:

PHP Fatal error:  Call to undefined function add_menu_page()
Run Code Online (Sandbox Code Playgroud)

根据文档,这似乎是一件非常简单的事情,但我完全感到困惑.任何帮助将非常感激 :)

Unk*_*Guy 40

我不知道你的代码看起来如何,但这就是我刚刚测试过它的方式:

add_action('admin_menu', 'my_menu');

function my_menu() {
    add_menu_page('My Page Title', 'My Menu Title', 'manage_options', 'my-page-slug', 'my_function');
}

function my_function() {
    echo 'Hello world!';
}
Run Code Online (Sandbox Code Playgroud)

看看http://codex.wordpress.org/Administration_Menus

  • 我不得不使用其他人的代码,它在生产服务器上工作,但不在我的开发服务器上工作。我将 `add_action('init', 'my_menu');` 改为 `add_action('admin_menu', 'my_menu');` 并且它在两台服务器上都有效,谢谢:) (3认同)

Vin*_*lvi 6

您收到此错误消息是因为您在任何挂钩之外使用了add_menu_page函数或者过早地挂了它.

函数add_menu_page具有作为第三个参数的功能,以确定用户是否具有访问菜单所需的功能,因此该功能仅在填充用户功能时可用,因此您应该使用admin_menu挂钩中的功能,如下所示.

add_action( 'admin_menu', 'register_my_custom_menu_page' );

function register_my_custom_menu_page(){
    add_menu_page(  __( 'Custom Menu Title' ), 'custom menu', 'manage_options', 'custom-page-slug', 'my_custom_menu_page' );
}

function my_custom_menu_page() {
    echo __( 'This is custom menu page.' );
}
Run Code Online (Sandbox Code Playgroud)

有关它的信息,请参阅以下WordPress codex页面.

http://codex.wordpress.org/Function_Reference/add_menu_page