我正在使用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();
}
答案 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 );