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

如何为WordPress单个terms页面关闭redirect_canonical重定向

现有代码问题说明

你写的代码逻辑方向是对的,但存在两个可优化的问题:

  • 配置参数冗余:add_filter的第四个参数代表回调函数可接收的参数数量,你的回调函数只用到2个参数,填2即可,填10不会报错但属于冗余配置
  • 匹配规则太宽泛:strpos( $requested_url, 'terms' )会匹配所有URL中包含terms字符串的路径,会误伤其他含terms的页面,不符合你仅针对terms页面关闭重定向的需求

最终可直接使用的实现代码

add_filter( 'redirect_canonical', 'disable_redirect_canonical_for_terms', 10, 2 );

function disable_redirect_canonical_for_terms( $redirect_url, $requested_url ) {
    // 解析请求URL的路径部分
    $request_path = parse_url( $requested_url, PHP_URL_PATH );
    // 匹配路径末尾为/terms的情况,兼容多语言站点前缀比如/xx/terms
    if ( preg_match( '/\/terms$/', trim( $request_path ) ) ) {
        // 匹配到目标页面时关闭重定向
        return false;
    }
    // 其他页面保持原有重定向逻辑
    return $redirect_url;
}

代码说明

  • 调整了参数配置,将第四个参数改为2,和回调接收的参数数量对应
  • 改用路径正则匹配,仅当请求路径的最后一段是terms时才会关闭重定向,不会误伤其他带terms关键词的页面,同时兼容你站点的多语言路径规则
  • 你可以把这段代码放到当前使用主题的functions.php文件中,或者放到自定义功能插件中即可生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:45:03