问题描述

我正在开发一个插件,我必须以部分的方式发布。

问题是,如果页面中有一个菜单,然后将新插件添加到第二个或另一个子菜单,否则添加一个新菜单,然后将插件添加到第 1 个子菜单。

我的问题:

  1. 如何检查是否存在菜单?

  2. 如果我正在编写一个可重用的函数,那么每个插件都会出现这种情况,从而导致冲突选项。

  3. 我不知道插件发布的顺序。

add_menu_page(
    'Page Title',
    'Top Menu Title',
    'manage_options',
    'my_unique_slug',
    'my_magic_function'
);
add_submenu_page(
    'my_unique_slug',
    'page title',
    'submenu title',
    'manage_options',
    'my_submenu_slug',
    'my_magic_function_of_submenu'
);

最佳解决方案

您可以使用 add_menu_page()(my_unique_slug) 的第四个参数来检查页面是否存在:

if ( empty ( $GLOBALS['admin_page_hooks']['my_unique_slug'] ) )
    add_menu_page(
        'Page Title',
        'Top Menu Title',
        'manage_options',
        'my_unique_slug',
        'my_magic_function'
    );

$GLOBALS['admin_page_hooks']是注册页面的列表。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。