如何修改WordPress后台布局,移除指定标签并默认打开WooCommerce订单页
原代码失效原因
- 条件逻辑完全写反:
!is_admin()代表仅在非后台页面执行代码,而修改后台菜单的逻辑需要在后台场景下才触发,该条件直接导致代码完全不会在后台运行 - 语法错误:代码中使用了中文弯引号
‘’,PHP 仅识别英文半角引号'',会直接触发解析错误,代码无法运行 - 菜单参数错误:
- WordPress 后台仪表盘的菜单slug是
index.php,不是你写的dashboard.php,还存在拼写错误dashbourd remove_submenu_page要求必须传入2个参数:父菜单slug、子菜单slug,你的调用参数不完整
- WordPress 后台仪表盘的菜单slug是
- 缺少角色过滤:没有添加管理员排除逻辑,不符合「仅非管理员用户生效」的需求
- 缺少跳转逻辑:原代码完全没有实现登录后默认跳转到WooCommerce订单页的功能
完整实现方案
将以下代码添加到当前使用主题的functions.php文件末尾,或者自定义功能插件中即可生效:
// 移除非管理员用户的仪表盘、个人资料菜单 add_action('admin_menu', 'remove_unnecessary_menu_for_non_admin', 999); function remove_unnecessary_menu_for_non_admin() { // 管理员保留所有菜单,直接返回 if (current_user_can('manage_options')) { return; } // 移除仪表盘菜单 remove_menu_page('index.php'); // 移除个人资料菜单 remove_menu_page('profile.php'); remove_submenu_page('users.php', 'profile.php'); } // 非管理员用户登录后默认跳转到WooCommerce订单页 add_filter('login_redirect', 'redirect_non_admin_to_woocommerce_orders', 10, 3); function redirect_non_admin_to_woocommerce_orders($redirect_to, $request, $user) { // 仅对非管理员的已登录用户生效 if (isset($user->roles) && is_array($user->roles) && !in_array('administrator', $user->roles)) { // WooCommerce订单页后台路径,有自定义后缀可以自行修改 return admin_url('edit.php?post_type=shop_order'); } return $redirect_to; }
注意事项
- 修改代码前请先备份对应文件,避免语法错误导致网站无法访问
- 如果需要针对指定角色生效(比如仅店铺客服、运营角色),可以修改权限判断条件,替换为对应角色的slug即可
- 如果你的WooCommerce订单页路径有自定义修改,调整
admin_url内的路径参数即可
内容的提问来源于stack exchange,提问作者Freddy
相关产品推荐
相关产品推荐

