如果自定义路由和 WordPress 默认的 posts 路由发生冲突,可能会导致请求无法正确解析或页面加载出现错误。为了避免这种情况,可以在定义自定义路由时尽量避免使用与 WordPress 默认路由相同或相似的 URL 结构。
如果仍然出现冲突,可以使用以下几种方法进行解决:
-
调整自定义路由的规则顺序: 确保自定义路由规则在默认路由规则之前添加。这样,当 URL 匹配自定义路由时,会优先匹配自定义规则。使用
add_rewrite_rule
时,可以通过第三个参数设置为'top'
来确保自定义规则被优先匹配。add_action('init', 'custom_rewrite_rule'); function custom_rewrite_rule() { add_rewrite_rule('^custom-data/', 'index.php?custom-data=1', 'top'); }
-
使用唯一的自定义路由前缀: 在定义自定义路由时,使用唯一的前缀来避免与默认路由冲突。例如,可以在自定义路由前添加一个独特的标识符:
add_action('init', 'custom_rewrite_rule'); function custom_rewrite_rule() { add_rewrite_rule('^myplugin/custom-data/', 'index.php?custom-data=1', 'top'); }
-
检查并调整冲突的路由: 在定义新的自定义路由之前,检查现有的路由规则,确保不会重复。可以使用
flush_rewrite_rules
函数在路由规则更改后刷新路由缓存:add_action('init', 'custom_rewrite_rule'); function custom_rewrite_rule() { add_rewrite_rule('^myplugin/custom-data/', 'index.php?custom-data=1', 'top'); flush_rewrite_rules(); }
通过以上方法,可以有效避免自定义路由与 WordPress 默认路由发生冲突。