WordPress add_rewrite_rule 祖孙页面重写规则被覆盖问题求助
解决方案
你遇到的问题由两个原因共同导致,按以下步骤修改即可修复:
- 修复第二条规则的语法错误
你贴的代码里第二条重写规则的目标参数存在语法问题:pagename=后面多了一个多余的单引号,会导致规则解析失效,哪怕调整顺序也无法正常注册。删掉多余的单引号即可。 - 调整规则注册顺序+优化通用规则匹配逻辑
WordPress的重写规则会从上到下匹配,命中第一条符合条件的规则就会终止匹配,所以必须把更具体的祖孙层级路径规则放在通用的父子层级规则之前注册。同时可以给通用规则加负向预查,从根源上避免误匹配billing路径。
修改后的完整代码如下:
// 先注册更具体的祖孙层级规则 add_rewrite_rule( '^user/dashboard/billing/([^/]*)/?', 'index.php?pagename=user/dashboard/billing&profile=$matches[1]', 'top' ); // 再注册通用的父子层级规则,加负向预查排除billing路径 add_rewrite_rule( '^user/dashboard/(?!billing/)([^/]*)/?', 'index.php?pagename=user/dashboard&profile=$matches[1]', 'top' );
- 刷新重写规则
修改代码后进入后台设置 > 固定链接页面,直接点击「保存更改」即可刷新重写规则缓存,不需要修改现有固定链接配置。
内容的提问来源于stack exchange,提问作者Kunal
相关产品推荐
相关产品推荐

