如何移除WordPress插件Testimonials Showcase的后台子菜单Group
解决方案
1. 禁止直接修改插件核心文件
直接改动插件主PHP文件会导致插件更新后代码丢失,且执行时机错误是引发网站崩溃的核心原因——你调用remove_submenu_page时,插件的菜单还没完成初始化,自然会触发致命错误。
2. 用正确的钩子移除子菜单
这个「Group」子菜单是插件注册的自定义分类法ttshowcase_groups自动生成的,必须在菜单初始化完成后执行移除操作。把以下代码放到当前主题的functions.php文件,或者自己新建的自定义功能插件里:
add_action('admin_menu', 'remove_testimonial_group_submenu', 999); function remove_testimonial_group_submenu() { // 移除指定子菜单,参数对应主菜单slug和子菜单slug remove_submenu_page('edit.php?post_type=ttshowcase', 'edit-tags.php?taxonomy=ttshowcase_groups&post_type=ttshowcase'); }
3. 验证参数准确性(若上述代码不生效)
如果子菜单没被移除,先确认菜单slug是否正确,可通过以下代码打印后台菜单信息:
add_action('admin_init', 'debug_testimonial_menus'); function debug_testimonial_menus() { global $submenu; // 打印客户评价相关的所有子菜单 print_r($submenu['edit.php?post_type=ttshowcase']); }
在后台查看输出内容,找到「Group」对应的子菜单条目,替换remove_submenu_page的第二个参数即可。
4. 彻底禁用分组功能(可选)
如果不仅要隐藏菜单,还要完全取消分组分类法的功能,可使用以下代码:
add_action('registered_taxonomy', 'unregister_testimonial_group_taxonomy', 10, 3); function unregister_testimonial_group_taxonomy($taxonomy, $object_type, $args) { if ($taxonomy === 'ttshowcase_groups' && in_array('ttshowcase', $object_type)) { unregister_taxonomy('ttshowcase_groups', 'ttshowcase'); } }
内容的提问来源于stack exchange,提问作者Roman
相关产品推荐
相关产品推荐

