【问题标题】:"you are not allowed to access this page" error when using add_submenu_page使用 add_submenu_page 时出现“您不允许访问此页面”错误
【发布时间】:2021-01-23 05:07:02
【问题描述】:

我正在使用 wp 的 add_submenu_page 函数在父 men 中添加子菜单,但在访问该子菜单时出现此错误:

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

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

我的代码:

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();
} 

【问题讨论】:

  • 所需的能力是manage_options。您以谁的身份登录并使用什么角色? codex.wordpress.org/Roles_and_Capabilities
  • @jaswrks 我以管理员身份登录,可以使用仪表板设置、更改主题以及管理员所做的所有事情。不是这样的。
  • 通常是因为 URL 中缺少子菜单的 slug。页面 URL 是什么样的?
  • @AndrewSchultz 我将 slug(在回调函数之前)从 sp-control 更改为 sp_control,现在我收到 404 错误。我的网址是 localhost/wp-admin/sp_control
  • 这看起来完全不正确。它应该看起来像这样取决于添加菜单的位置,这是用于设置菜单 /wp-admin/options-general.php?page=my-custom-options

标签: wordpress


【解决方案1】:

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

add_action( 'admin_menu', array( $this, 'sp_menu'), 11);

这解决了我的问题。

也可以查看https://wordpress.stackexchange.com/questions/91377/admin-menu-as-submenu-from-another-plugin

【讨论】:

    【解决方案2】:

    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 );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-05
      • 2019-08-17
      • 1970-01-01
      • 2011-10-14
      • 2018-12-19
      • 1970-01-01
      • 2014-02-19
      • 2012-02-02
      相关资源
      最近更新 更多