创建子菜单链接的奇怪行为

时间:2014-03-06 作者:Brandon White

我正在尝试开发一个插件,需要在仪表板侧栏菜单中添加两个页面。其中一个是主要类别。除了设置页面的第二个子菜单项外,一切正常。在阅读了差不多同样多的法典并在网上搜索类似的问题后,我没有找到解决方案。

我是不是错过了什么?(第一个子菜单当然是创建重复的登录页)

代码

add_action(\'admin_menu\', \'my_add_submenu\');
function my_add_submenu(){
    add_menu_page( \'Author Discussion\', \'Discussion\', \'manage_options\', \'author_discuss\', \'author_discuss_build_page\', plugins_url( \'author-discussion/images/icon.png\' ), 999 );
    add_submenu_page( \'author_discuss\', \'Author Discussion\', \'Author Discussion\', $menu_capability, \'author_discuss\' );
    add_submenu_page( \'author_discuss\', \'Author Discussion Settings\', \'Settings\', \'manage_options\', \'author_discuss_settings\', \'author_discuss_settings_page\' );
}

function author_discuss_build_page(){
    //do something
}

function author_discuss_settings_page() { 
    //do something
}
效果我注意到一件事,当我点击侧栏中的链接时,它会重定向到:

  • /wp-admin/author_discuss_settings /wp-admin/admin.php?page=author_discuss_settings

    我试过什么了

    我遵循了WordPress Codex上的最后一个示例here.

    我已尝试从admin_menuadmin_init 看看这是否会改变结果。URL按预期打印,/wp-admin/admin.php?page=author_discuss_settings 但引发“您没有足够的权限”错误

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

在codex的同一页上,您有以下内容:

注意:如果您遇到“您没有足够的权限访问此页面”如果在wp\\u die()屏幕中显示消息,则说明您已过早上钩。

这部分回答了你的问题。

第二部分,应使用以下代码:

add_action(\'admin_menu\', \'my_add_submenu\');
function my_add_submenu(){
      add_menu_page( \'Parent\', \'Parent\', \'manage_options\', \'author_discuss\', \'author_parent\' ); 
      add_submenu_page( \'author_discuss\', \'Author Discussion\', \'Author Discussion\', \'manage_options\', \'author_discuss\' );
      add_submenu_page( \'author_discuss\', \'Author Discussion Settings\', \'Settings\', \'manage_options\', \'author_discuss_settings\', \'author_discuss_settings_page\' );
}

function author_parent() {

}

function author_discuss_settings_page() { 
    //do something
}
检查你的功能,看看是否有一些拼写错误。

结束

相关推荐

从unctions.php调用的Add_Actions未返回好值

我正试图通过这些功能为我的网站添加一些安全/访问防护。php。然而,每当我尝试通过函数添加时。php(而不是作为插件,我以前做过)失败(总是返回false)。例如:add_action(\"parse_query\", checkaccess()); // in functions.php 以及function checkaccess() { $allowAccess = false; if(is_admin()||is_front_page()||i