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

如何隐藏并禁用WordPress后台管理菜单项及禁止URL直接访问

WordPress指定管理员账号后台菜单隐藏+访问拦截实现方法

仅调用remove_menu_page只会删除后台左侧菜单入口,不会拦截直接通过URL输入的访问请求,需要额外挂载admin_init钩子做请求校验拦截,完整实现代码如下:

// 隐藏指定用户的后台菜单
function custom_hide_restricted_menus() {
    $user = wp_get_current_user();
    if($user && isset($user->user_login) && 'admin2' === $user->user_login) {
        remove_menu_page( 'plugins.php' ); // 插件菜单
        remove_menu_page( 'tools.php' ); // 工具菜单
        remove_menu_page( 'users.php' ); // 用户菜单
    }
}
add_action('admin_menu', 'custom_hide_restricted_menus');

// 拦截指定用户的受限页面直接访问请求
function custom_restrict_admin_page_access() {
    // 非后台请求、非目标用户直接跳过校验
    $user = wp_get_current_user();
    if(!is_admin() || !$user || !isset($user->user_login) || 'admin2' !== $user->user_login) {
        return;
    }

    // 定义禁止访问的页面列表
    $restricted_pages = [
        'plugins.php',
        'tools.php',
        'users.php'
    ];

    // 获取当前访问的后台页面文件名
    $current_page = basename($_SERVER['PHP_SELF']);

    // 匹配到受限页面跳转至后台首页,也可替换为wp_die输出权限不足提示
    if(in_array($current_page, $restricted_pages)) {
        wp_redirect(admin_url());
        exit;
    }
}
add_action('admin_init', 'custom_restrict_admin_page_access');

代码说明

  • 菜单隐藏逻辑从原来的admin_head钩子改为admin_menu,是WordPress官方推荐的后台菜单修改钩子,执行时机更合理,不会出现菜单闪显的问题
  • admin_init是后台页面初始化前触发的钩子,在页面内容输出前做访问拦截性能最优,不会有多余的页面渲染开销
  • 如果需要给用户显示权限不足提示,可以把wp_redirect(admin_url());替换为wp_die('你没有权限访问该页面,请联系超级管理员。');
  • 如果后续需要新增其他限制页面,直接在$restricted_pages数组里添加对应后台页面的文件名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:48:04