我想检查 Wordpress 管理界面中是否已经存在某个顶级菜单:
- 如果它存在,那么我想在其中创建一个子菜单。
- 否则,我想创建顶级菜单,然后创建子菜单。
我有几个小插件,我想将它们组织在一个顶级菜单中,然后每个插件都有一个子菜单。但是如何检查顶级菜单的存在呢?
您可以使用全局变量来执行此操作,$menu
这将返回一个或多个数组,这些项目具有特定的索引,其中存储了菜单的名称您可以遍历数组以查找所需的索引,如果找到,那么您只需添加子菜单页面,否则您可以创建它。
global $menu;
$menuExist = false;
foreach($menu as $item) {
if(strtolower($item[0]) == strtolower('My Menu Name')) {
$menuExist = true;
}
}
if(!$menuExist)
// Create my menu item
另一种选择是,使用该功能menu_page_url()
:
根据注册的 slug 获取 URL 以访问特定菜单页面。
如果 slug 没有正确注册,则不会返回任何 URL。
用法
该函数有两个参数:
$echo
,默认为真。第二个参数是重要的部分:将其设置false
为获取返回值。如果您不这样做,则该函数将回显 URL 而不是返回它。
示例代码:
<?php
$menu_url = menu_page_url( 'some-plugin', false );
if ( $menu_url ) {
// The top menu exists, so add a sub-menu item.
add_submenu_page( 'some-plugin', 'Sample Page', 'My Menu', 'read' );
} else {
// No top menu with that slug, we can create it.
add_menu_page( 'Sample Page', 'My Menu', 'read', 'some-plugin' );
}