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

WordPress自定义分类法前置自定义文章类型别名导致根页面跳转首页

问题成因
  • 核心问题出在你自行添加的product_rewrite_rules重写规则逻辑错误:你为每个分类法term添加的正则规则为^' . $term->slug . '/(.*)/?$,该规则会匹配所有以对应term slug开头的路径,且你设置了top优先级,会早于WordPress默认的页面、文章路由规则执行。比如当你访问/personal/info时,会被这个规则拦截,被误判为product自定义文章类型的请求,查询不到对应内容就会触发404后跳转到首页。
  • 你当前的规则没有限定路径中必须包含product这个自定义文章类型标识,导致所有/{term_slug}/开头的路径都被拦截,包括你原本的场景页面和根页面。
  • 分类法在前、文章类型在后的结构本身没有问题,只是你的重写规则写的过于宽泛才会产生冲突,而文章类型在前的结构重写规则只会匹配/product/开头的路径,不会和其他页面路径冲突,所以不会出问题。
修复方案
  1. 先删除你现有错误的product_rewrite_rules函数以及对应的add_filter挂载代码,这段逻辑本身不符合WordPress重写规则的编写规范,也不需要遍历所有term生成规则。
  2. 添加正确的重写规则,仅匹配/{分类法别名}/product/{文章别名}结构的路径:
function custom_product_rewrite_rules() {
    // 匹配单篇产品的路径
    add_rewrite_rule(
        '^([^/]+)/product/([^/]+)/?$',
        'index.php?product_taxonomy=$matches[1]&product=$matches[2]&post_type=product',
        'top'
    );
    // 可选:添加对应分类下的产品归档路径规则
    add_rewrite_rule(
        '^([^/]+)/product/?$',
        'index.php?product_taxonomy=$matches[1]&post_type=product',
        'top'
    );
}
add_action('init', 'custom_product_rewrite_rules');
  1. 登录WordPress后台,进入「设置」-「固定链接」页面,直接点击「保存更改」按钮,刷新站点的重写规则缓存即可生效。如果修改后仍有异常,可以先删除站点根目录下的.htaccess文件,再重新保存固定链接,WordPress会自动生成新的重写规则文件。

内容的提问来源于stack exchange,提问作者Vincent Van Minnebruggen

相关产品推荐
方舟 Agent Plan

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

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