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

如何通过functions.php限制WordPress未授权用户访问并实现登录跳转?

WordPress 未授权用户自动重定向登录页实现方案(无需插件)

直接在主题的functions.php文件中添加以下代码,即可实现需求:

1. 未授权用户重定向至自定义登录页

function redirect_unauthorized_users() {
    // 排除无需重定向的页面:自定义登录页、后台、默认登录/注册/找回密码页
    $excluded_pages = array(
        'page-login', // 替换为你的自定义登录页slug
        'wp-login.php',
        'wp-admin'
    );
    
    // 获取当前页面的URI和slug
    $current_uri = $_SERVER['REQUEST_URI'];
    $current_slug = get_post_field('post_name', get_post());
    
    // 判断用户未登录且当前页面不在排除列表时执行重定向
    if (!is_user_logged_in()) {
        $needs_redirect = true;
        foreach ($excluded_pages as $page) {
            if (str_contains($current_uri, $page) || $current_slug === $page) {
                $needs_redirect = false;
                break;
            }
        }
        if ($needs_redirect) {
            wp_redirect(home_url('/page-login/')); // 替换为你的自定义登录页完整URL
            exit;
        }
    }
}
add_action('template_redirect', 'redirect_unauthorized_users');

2. 登录成功后跳转至首页

添加以下代码覆盖默认登录跳转行为:

function login_redirect_to_home($redirect_to, $request, $user) {
    // 所有用户登录后统一跳转到首页
    return home_url();
}
add_filter('login_redirect', 'login_redirect_to_home', 10, 3);

注意事项

  • 请将代码中的page-login和/page-login/替换为你实际的自定义登录页slug和URL路径
  • 修改functions.php前务必备份文件,避免语法错误导致网站无法访问
  • 测试时先退出登录,验证未授权用户访问任意页面是否会被重定向;登录后确认是否正常跳转至首页
  • 若自定义登录页使用了自定义表单,需确保登录逻辑通过wp_signon()等WordPress原生函数处理,保证用户状态正常生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 13:55:06