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

WordPress如何阻止未同意使用条款的已登录用户访问并解决重定向过多错误

错误原因
  • 未排除条款同意页本身的重定向校验:template_redirect 钩子会在所有前台页面加载时触发,未同意条款的用户访问 /welcome 页面时会被反复重定向到同一地址,形成无限循环,最终触发重定向次数过多错误。
  • 原代码中重定向地址未补全协议头(http/https),不符合wp_redirect函数的参数规范,也可能引发跳转异常。
修复方案

在重定向逻辑前新增目标页面的排除判断,同时优化地址写法适配WordPress规范,修复后代码如下:

add_action('template_redirect', 'confirmation_of_terms');
function confirmation_of_terms(){
    $current_user_id = get_current_user_id();
    if( $current_user_id > 0 ){
        // 排除条款同意页面,避免循环重定向,括号内填你的页面别名
        if( is_page('welcome') ){
            return;
        }
        $permission = get_user_meta( $current_user_id, 'approval_of_regulations' , true );
        if( empty( $permission ) ){
            // home_url会自动拼接站点域名和协议,无需硬编码地址
            wp_redirect( home_url('/welcome') );
            exit;
        }
    }
}
补充说明

如果/welcome不是WordPress后台创建的固定页面,可以通过请求路径判断做排除,替换上面的is_page判断逻辑即可:

// 匹配当前访问路径是否包含/welcome,是则跳过重定向
if( strpos( $_SERVER['REQUEST_URI'], '/welcome' ) !== false ){
    return;
}

如果有其他不需要做权限校验的页面,也可以同步加到排除条件中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:57:04