我正在运行Wordpress 3.3.2的新安装,唯一启用的插件是我正在开发的插件,但我似乎无法通过中的权限问题add_menu_page
. 除了使用匿名函数而不是命名函数之外,我遵循documentation 几乎完全正确。
我的插件来源:
<?php
/*
Plugin Name: Some Plugin
*/
add_action(\'admin_init\', function() {
add_menu_page(\'Some Page\', \'Some Page\', \'manage_options\', \'some-slug\', function() {
echo \'Hello, world!\';
});
});
?>
菜单链接显示在菜单底部,但不是“你好,世界!”,我明白了:
您没有足够的权限访问此页面。
我也试过使用administrator
替代能力manage_options
, 但结果是一样的。
我做错了什么?
最合适的回答,由SO网友:Stephen Harris 整理而成
你想要admin_menu
钩子,而不是admin_init
.
此外,您不应该使用匿名函数。相反,请使用:
function wpse51004_add_menu_page() {
add_menu_page(\'Some Page\', \'Some Page\', \'manage_options\', \'some-slug\', \'wpse51004_some_page_callback\');
};
add_action(\'admin_menu\', \'wpse51004_add_menu_page\');
function wpse51004_some_page_callback() {
echo \'Hello, world!\';
}
SO网友:hsn0331
你必须使用admin_menu
而不是admin_init
, 这就是为什么你会出错。
my_plugin_add_menu_page(){
add_menu_page(\'Some Page\', \'Some Page\', \'manage_options\', \'some-slug\', \'my_plugin_some_page_callback\');
}
add_action(\'admin_menu\', \'my_plugin_some_page_callback\');
function my_plugin_some_page_callback() {
echo \'Hello, world!\';
}
您也可以使用匿名
function
但组织函数名称更为简洁。