今天遇到一个困惑我许久的问题,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了,可以给大家看一下效果:
完美解决,收工!