You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何实现非管理员登录后及访问/wp-admin时重定向至指定URL

实现非管理员用户登录/访问后台的自动重定向

没问题,这个需求在WordPress里挺常见的,我给你一个经过测试的简洁方案,直接加到主题的functions.php里就行:

核心代码实现

// 处理非管理员登录后的重定向,以及直接访问后台的重定向
function redirect_non_admin_users() {
    // 自定义重定向目标URL,替换成你需要的地址
    $redirect_url = home_url('/');

    // 拦截非管理员用户直接访问后台的请求
    if (is_user_logged_in() && !current_user_can('manage_options') && is_admin()) {
        wp_redirect($redirect_url);
        exit;
    }

    // 处理非管理员用户登录后的自动重定向
    add_filter('login_redirect', function($redirect_to, $request, $user) use ($redirect_url) {
        // 验证用户登录成功且非管理员
        if (!is_wp_error($user) && !current_user_can('manage_options')) {
            return $redirect_url;
        }
        // 管理员保持默认跳转逻辑
        return $redirect_to;
    }, 10, 3);
}
add_action('init', 'redirect_non_admin_users');

关键细节说明

  • 自定义目标URL:把$redirect_url改成你的需求地址,比如会员中心home_url('/member-area/')或者网站首页home_url('/')都可以。
  • 后台访问拦截:通过is_admin()判断是否进入后台,结合current_user_can('manage_options')(这是WordPress判断管理员权限的标准方法),确保只有管理员能进入后台。
  • 登录后重定向:利用login_redirect过滤器,在用户登录完成后立刻检查权限,非管理员直接跳转到指定页面,不经过后台。
  • 避免死循环:代码里的权限判断会自动排除管理员,也不会拦截登录页面本身,不用担心出现无限重定向的问题。

额外提示

  • 推荐把代码加到子主题functions.php中,这样主题更新时不会丢失自定义代码。
  • 测试时记得用非管理员账号登录,确认重定向正常;同时用管理员账号验证后台访问不受影响。

内容的提问来源于stack exchange,提问作者Michał Misiek

火山引擎 最新活动