我正在使用 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();
}
Run Code Online (Sandbox Code Playgroud)
TLDR:为创建子菜单页面的操作添加较低的优先级,例如 99。
\nadd_action( \'admin_menu\', \'wpdocs_register_my_custom_submenu_page\', 99 );\n
Run Code Online (Sandbox Code Playgroud)\n就我而言,我试图将子菜单添加到预安装的插件菜单中,所以我得到了同样的错误。
\n感谢isabel104和她的评论我解决了这个问题:
\nhttps://developer.wordpress.org/reference/functions/add_submenu_page/#div-comment-4596
\n关于上面“更多信息”部分中的第一个注释,您还可能会遇到 \xe2\x80\x9cSorry, you are not allowed to access this page.\xe2\x80\x9d 消息,即使您\xe2\x80\x99ve hooked正确地进入 admin_menu 挂钩。如果所有这些都为真,则会出现此错误消息:
\n您的父页面是您使用 add_menu_page 添加的自定义页面,并且\n该父页面是在另一个插件中创建的,而不是创建子菜单页面的同一个插件,并且\n您没有\xe2\x80\x99t 添加较低的优先级add_submenu_page 调用的 admin_menu 挂钩,因此子菜单页面可能会在父页面\xe2\x80\x93 之前触发,从而导致错误。
\n解决方案:为创建子菜单页面的操作添加较低的优先级,例如 99。例如:
\nadd_action( \'admin_menu\', \'wpdocs_register_my_custom_submenu_page\', 99 );\n
Run Code Online (Sandbox Code Playgroud)\n
我有同样的问题。尝试在 'admin_menu' 挂钩中添加优先级并从子菜单 slug 中删除连字符。
add_action( 'admin_menu', array( $this, 'sp_menu'), 11);
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题。
还要检查这个https://wordpress.stackexchange.com/questions/91377/admin-menu-as-submenu-from-another-plugin
归档时间: |
|
查看次数: |
3000 次 |
最近记录: |