如何修改自定义分类法菜单URL使其归属WordPress独立后台菜单
WordPress自定义分类法归属指定菜单及高亮解决方法
基础配置校验
首先确认你注册自定义分类法时的参数配置正确:
show_in_menu设为false:隐藏分类法默认挂载到关联文章类型菜单下的入口show_ui保持true:保留分类法管理页面的访问权限,不影响正常功能使用
步骤1:添加分类法子菜单到目标父菜单
这里以你提到的挂载到「设置」菜单为例,使用admin_menu钩子添加子菜单,不需要自定义页面渲染逻辑,WordPress会自动加载分类法默认管理界面:
add_action('admin_menu', function () { // 添加location分类法管理入口 add_options_page( '地点分类管理', // 页面标题 '地点分类', // 菜单显示名称 'manage_categories', // 访问权限要求 'edit-tags.php?taxonomy=location', // 菜单slug,直接填分类法管理页面路径 '' // 渲染回调留空即可 ); // 添加space分类法管理入口 add_options_page( '空间分类管理', '空间分类', 'manage_categories', 'edit-tags.php?taxonomy=space', '' ); });
如果需要挂载到自定义顶级菜单,将add_options_page替换为add_submenu_page,传入对应顶级菜单的slug即可。
步骤2:修正菜单高亮逻辑
WordPress默认通过全局parent_file变量判断当前页面归属的父菜单,使用parent_file过滤器手动修正自定义分类法页面对应的菜单归属:
add_filter('parent_file', function ($parent_file) { global $submenu_file, $current_screen; // 统一配置需要调整的自定义分类法别名 $target_taxonomies = ['location', 'space']; if (in_array($current_screen->taxonomy, $target_taxonomies)) { // 父菜单为设置菜单时,父菜单slug固定为options-general.php $parent_file = 'options-general.php'; // 子菜单匹配之前配置的分类法管理路径 $submenu_file = 'edit-tags.php?taxonomy=' . $current_screen->taxonomy; } return $parent_file; });
如果是挂载到自定义顶级菜单,将$parent_file的值替换为你自定义顶级菜单的slug即可。
验证效果
配置完成后刷新后台,点击你添加的分类法管理入口,对应父菜单和子菜单会正常高亮,不会再默认选中自定义文章类型的菜单。
内容的提问来源于stack exchange,提问作者Colin T aka ManiacalV
相关产品推荐
相关产品推荐

