5

我想检查 Wordpress 管理界面中是否已经存在某个顶级菜单:

  • 如果它存在,那么我想在其中创建一个子菜单。
  • 否则,我想创建顶级菜单,然后创建子菜单。

我有几个小插件,我想将它们组织在一个顶级菜单中,然后每个插件都有一个子菜单。但是如何检查顶级菜单的存在呢?

4

2 回答 2

3

您可以使用全局变量来执行此操作,$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
于 2013-04-16T18:54:39.520 回答
2

另一种选择是,使用该功能menu_page_url()

根据注册的 slug 获取 URL 以访问特定菜单页面。

如果 slug 没有正确注册,则不会返回任何 URL。

用法

该函数有两个参数:

  1. 包含顶部菜单 slug 的字符串
  2. 布尔标志$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' );
}
于 2021-06-18T12:04:30.877 回答