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

bgtovc5b  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(340)

注意:使用建议的代码更新了代码
我正在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',
        'Settings',
        'manage_options',
        'bbtb_settings',
         function () { // anonymous callback function
            include "includes/setting_page.php";
        }
       );
       function all_bbtb_conventions() {
        include "includes/add_convention.php";
       }
    }
  }

因此,我通过在“添加菜单”页面中将“所有bbtb惯例”替换为“bbtb设置”来检查子菜单的功能是否有效。然后,该函数开始工作。
因此,在“添加”子菜单“页面设置”中一定有我缺少的内容

vkc1a9a2

vkc1a9a21#

这可能是因为您在回调函数的名称中使用了与slug相同的名称,请尝试更改它。
您还可以执行以下操作:

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

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

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

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

也不需要添加条件来验证manage_选项的容量,因为对于某些内容,容量是在中的参数3中设置的 add_menu_page() 在中的参数4中 add_submenu_page() 我希望我帮助过你,问候你!

相关问题