wordpress中的函数“add_submenu_page连接到主页而不是子菜单页面

问题描述

注意:用建议的代码更新了代码

我正在 wordpress 管理中为插件创建菜单和子菜单。 主菜单菜单项工作正常并转到正确的 PHP 文件页面)。 但是子菜单显示菜单的文本,但是当点击它时它会重定向到 404 页面,在我的情况下它会转到主页。我在代码上花了几个小时,看起来我正在监督某些事情。代码如下:

class BbtbPlugin{

   public function __construct(){
      add_action( 'init',array( $this,'bbtb_admin_menu' ));
   }
   public function bbtb_admin_menu() {
     add_menu_page(
        'Bricks by the Bay conventions','BBTB conventions','manage_options','bbtb_conventions','all_bbtb_conventions','dashicons-media-spreadsheet',11
      );
      add_submenu_page(
        'bbtb_conventions','Settings','bbtb_settings',function () { // anonymous callback function
            include "includes/setting_page.PHP";
        }
       );
       function all_bbtb_conventions() {
        include "includes/add_convention.PHP";
       }
    }
  }

因此,我通过在 add_menu_page 中将“all_bbtb_convention”替换为“bbtb_settings”来检查子菜单功能是否有效。然后函数就起作用了。

所以 add_submenu_page 设置中一定有我遗漏的东西

解决方法

可能是因为您在回调函数的名称中使用了与 slug 相同的名称,请尝试更改它。

您还可以执行以下操作:

add_submenu_page(
    'bbtb_conventions','Settings','manage_options','bbtb_settings','bbtb_settings_callback'
);

function bbtb_settings_callback() {
    include "includes/setting_page.php";
}

您甚至可以使用匿名函数省略回调函数。

add_submenu_page(
    'bbtb_conventions',function () { // anonymous callback function
        include "includes/setting_page.php";
    }
);

也不需要添加条件来验证manage_options的容量,因为对于某些东西,容量在add_menu_page()的参数3和add_submenu_page()的参数4中设置

希望对你有帮助,问候!

,

发现我需要更改 add_action( 'init',array( $this,'bbtb_admin_menu' ));init 替换 admin_menu。 现在效果很好