我正在尝试开发多个插件来满足我在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
,它是,因为我已经多次检查文档试图解决这个问题。
答案 0 :(得分:2)
您必须在菜单后触发子菜单。当未声明默认值为10
时,这是通过挂钩优先级完成的。
主菜单设置为默认优先级:
add_action('admin_menu', array($this, 'add_group_page'));
子菜单必须优先级较低:
add_action( 'admin_menu', array($this, 'add_groupforms_page'), 11 );