在add_menu_page的其他插件中使用add_submenu_page时出错

时间:2014-08-07 16:56:36

标签: php wordpress-plugin wordpress

我正在尝试开发多个插件来满足我在WordPress中的各种需求。我想我会创建一个“基础”插件,然后可以在其上安装其他插件。

我已经使用add_menu_page在我的基础插件中创建了一个菜单页面(显然所有这些都在我的班级中,变量用字符串替换以便于阅读)

private function __construct() {
    add_action('admin_menu', array($this, 'add_group_page'));
}

public function add_group_page(){
    add_menu_page('Group Plugins', 'Group Plugins', 'activate_plugins', 'group-plugins', array($this, 'group_page_callback'), '', 3.1415);
}

public function group_page_callback() { ?>
    <div class="wrap">
        <h2>Group Plugins</h2>
    </div>
<?php
}

工作正常,我的菜单结构现在有:(标签错误,为了网址的可读性)

(群组插件)[admin.php?page=group-plugins]

在我的第二个插件中,我尝试拨打add_submenu_page

private function __construct() {
    add_action('admin_menu', array($this, 'add_groupforms_page'));
}

public function add_groupforms_page(){
    add_submenu_page('group-plugins', 'Group Forms', 'Group Forms', 'manage_options', 'group-forms', array($this, 'groupforms_page_callback'));
}

public function groupforms_page_callback() { ?>
    <div class="wrap">
        <h2>Group Forms</h2>
    </div>
<?php
}

似乎就像添加新的子菜单项一样。但菜单结构更改为:

(群组插件)[admin.php?page=**group-forms**]

- (小组表格)[admin.php?page=**group-forms**]

因此,两个链接都链接到新的子菜单页面,当我点击其中任何一个时,我只会得到一个后端样式页面,上面写着You do not have sufficient permissions to access this page.

如果我将网址中的slu_更改为“group-plugins”,我仍然可以访问“群组插件”原始页面,但显然是不对的,而且当我google时,这是唯一真正显示的内容错误是人们说要检查它在正确的位置:admin_menu,它是,因为我已经多次检查文档试图解决这个问题。

1 个答案:

答案 0 :(得分:2)

您必须在菜单后触发子菜单。当未声明默认值为10时,这是通过挂钩优先级完成的。

主菜单设置为默认优先级:

add_action('admin_menu', array($this, 'add_group_page'));

子菜单必须优先级较低:

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