使用add_submenu_page时“您不能访问此页面”错误

时间:2017-11-11 21:05:10

标签: wordpress

我正在使用wp的add_submenu_page函数在父文件中添加子菜单,但是在访问该子菜单时我收到此错误:

  

抱歉,您无法访问此页面。

我以管理员身份登录,刷新固定链接并注销然后登录但没有任何变化。

我的代码:

class SPSetup {

    public function reg_func() {
        add_action( 'admin_menu', array( $this, 'sp_menu', ) );
    }

    public function sp_menu() {
        add_submenu_page( 
            'montheme_options', 'SP Dashboard', 'SP Dashboard', 
            'manage_options', 'sp-control', 
            array( $this, 'callback' ) 
        );
    }      
}


if ( class_exists( 'SPSetup ' ) ) {
    $SP= new SPSetup ();
    $SP->reg_func();
} 

2 个答案:

答案 0 :(得分:3)

我有同样的问题。 尝试在'admin_menu'钩子中添加优先级并从子菜单slug中删除连字符。

FALSE

这解决了我的问题。

同时检查此https://wordpress.stackexchange.com/questions/91377/admin-menu-as-submenu-from-another-plugin

答案 1 :(得分:0)

TLDR:为创建子菜单页面的操作添加较低的优先级,例如 99。

add_action( 'admin_menu', 'wpdocs_register_my_custom_submenu_page', 99 );

在我的例子中,我试图向预安装的插件菜单添加一个子菜单,所以我遇到了同样的错误。

感谢 isabel104 和她的评论,我解决了这个问题:

https://developer.wordpress.org/reference/functions/add_submenu_page/#div-comment-4596

关于上面“更多信息”部分中的第一条注释,您还可能会遇到“抱歉,您无权访问此页面”。即使您已正确连接到 admin_menu 挂钩,也会显示消息。如果所有这些都为真,则会出现此错误消息:

您的父页面是您使用 add_menu_page 添加的自定义页面,并且 该父页面是在另一个插件中创建的,而不是创建子菜单页面的同一个插件,并且 您没有为 add_submenu_page 调用为 admin_menu 挂钩添加较低的优先级,因此子菜单页面可能会在父页面之前触发 - 导致错误。

解决方案:为创建子菜单页面的操作添加较低的优先级,例如 99。例如:

add_action( 'admin_menu', 'wpdocs_register_my_custom_submenu_page', 99 );