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

如何让template_redirect()仅执行一次?解决首页重定向循环问题

解决WordPress首页重定向循环问题

你的问题核心是:重定向后页面仍为首页,is_page('homepage')的条件始终成立,导致无限循环。解决的关键是在重定向前先检查URL里是否已经存在ref参数,只有当参数不存在时才执行重定向。

修改后的代码如下:

function redirect_with_ref() {
    // 先判断是否是目标首页,再检查URL中是否没有ref参数
    if ( is_page( 'homepage' ) && ! isset( $_GET['ref'] ) ) {
        $redirect_url = add_query_arg( array( 'ref' => random_str() ), home_url() );
        wp_redirect( $redirect_url );
        exit;
    }
}
add_action( 'template_redirect', 'redirect_with_ref' );

逻辑说明

  • 新增! isset( $_GET['ref'] )的判断:当URL里已经有ref参数时,不再触发重定向,直接跳过,避免循环。
  • 函数名改成redirect_with_ref只是为了语义更清晰,你也可以保留原函数名。

如果random_str()生成的是一次性或需要时效性的参数,也可以结合session做标记,但用URL参数判断是最直接适配你需求的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:10:55