You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅移除WordPress仪表盘外观菜单中的Themes选项

仅移除WordPress仪表盘外观菜单下Themes(主题)选项的实现方案

remove_menu_page( 'themes.php' )会删除整个外观菜单,原因是外观顶级菜单本身的访问slug就是themes.php;remove_submenu_page()无法单独移除目标子项,是因为外观菜单下第一个子项Themes的slug和顶级菜单完全一致,没有附加查询参数,函数无法区分顶级菜单与该子项,会触发整个外观菜单被移除的逻辑。

实现代码

将以下代码添加到当前启用主题的functions.php文件,或自定义站点功能插件中即可生效:

// 移除外观菜单下的Themes子菜单项
add_action( 'admin_menu', function() {
    global $submenu;
    // 外观菜单组中索引为0的子项即为Themes选项
    if ( isset( $submenu['themes.php'][0] ) ) {
        unset( $submenu['themes.php'][0] );
    }
}, 999 );

// 拦截直接访问主题页面的请求,避免通过手动输入地址绕过菜单限制
add_action( 'admin_init', function() {
    global $pagenow;
    // 访问无附加参数的themes.php时,自动跳转到指定的外观子页面,默认跳转至自定义器页面
    if ( $pagenow === 'themes.php' && empty( $_GET ) ) {
        wp_safe_redirect( admin_url( 'customize.php' ) );
        exit;
    }
} );

自定义配置说明

  • 跳转地址可按需替换:需要跳转到菜单管理页就将customize.php替换为nav-menus.php,跳转到小工具管理页替换为widgets.php即可
  • 若需要给最高权限管理员保留Themes选项访问权限,仅限制其他角色,可在两段功能逻辑的最开头添加权限判断:
// 管理员不触发限制逻辑
if ( current_user_can( 'update_core' ) ) {
    return;
}
  • 请勿将代码直接写入WordPress核心程序文件,否则版本更新后代码会被覆盖失效。

内容的提问来源于stack exchange,提问作者Vinith Almeida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 01:42:18