开发日志记录之后台原生菜单处理插图

今天遇到一个困惑我许久的问题,WordPress后台添加菜单,过滤掉第一个子菜单项,记录以下,将来如果有有缘人看见,记得给其他人分享,避免这个坑。

由于我插件的页面是用的WordPress的原生方法,没有使用框架,因为有些时候框架为限制我们的页面发挥。

我最开始的添加菜单的代码如下:

function hotspot_add_menu_item()
{
    add_menu_page(
        __('Hotspot 设置', 'hotspot'), // page title
        __('Hotspot', 'hotspot'), // menu title
         'manage_options', // capability
         'hotspot', // menu slug
         'hotspot_display_page', // callback function
         'dashicons-admin-plugins', // icon
        90// position
    );

    // Add sub-menu items under Hotspot
    add_submenu_page(
        'hotspot', // parent slug
        __('热词挑选', 'hotspot'), // page title
        __('热词挑选', 'hotspot'), // menu title
         'manage_options', // capability
         'hotspot-choices', // menu slug
         'hotspot_choices_page' // callback function
    );

    add_submenu_page(
        'hotspot', // parent slug
        __('统计分析', 'hotspot'), // page title
        __('统计分析', 'hotspot'), // menu title
         'manage_options', // capability
         'hotspot-statistics', // menu slug
         'hotspot_statistics_page' // callback function
    );

    // Add sub-menu items under Hotspot about
    add_submenu_page(
        'hotspot', // parent slug
        __('关于', 'hotspot'), // page title
        __('关于', 'hotspot'), // menu title
         'manage_options', // capability
         'hotspot-about', // menu slug
         'hotspot_about_page' // callback function
    );
}
add_action('admin_menu', 'hotspot_add_menu_item');

虽然看起来,没有什么问题,但实际上,他会在子菜单创建一个与父菜单相同的菜单项,菜单名称重复,看起来的观感不好。我去把百度和CSDN都翻遍了天,都没找到相关的解决办法,最后还是在WordPress的官方文档里,翻到了有关过滤子菜单的钩子。

功夫不负有心人,还得是海外搜索引擎,完成了以下操作:

function remove_hotspot_submenu()
{
    global $submenu;
    if (isset($submenu['hotspot'])) {
        unset($submenu['hotspot'][0]);
    }
}
add_action('admin_menu', 'remove_hotspot_submenu');

过滤掉后,就非常的nice了,可以给大家看一下效果:

开发日志记录之后台原生菜单处理插图1

完美解决,收工!