WordPress使用Dokan为商品URL动态加slug后访问404如何解决
问题解决步骤
根因说明
当前配置的重写规则完全不匹配生成的商品URL结构,且没有传递商品slug参数,WordPress无法解析URL对应的内容,因此返回404错误。
具体修改方案
1. 替换重写规则相关代码
删除之前添加的查询变量、重写规则代码,替换为以下代码:
// 注册自定义查询变量 add_filter('query_vars', 'custom_add_query_vars'); function custom_add_query_vars($qVars){ $qVars[] = "vendor_slug"; return $qVars; } // 新增正确的重写规则 add_action( 'init', 'custom_rewrites_init' ); function custom_rewrites_init(){ add_rewrite_rule( // 匹配格式:business/[供应商slug]/[商品slug]/ 'business/([^/]+)/([^/]+)/?$', // 传递参数:指定内容类型为商品,传入供应商slug和商品slug 'index.php?post_type=product&vendor_slug=$matches[1]&name=$matches[2]', 'top' ); }
如果URL前缀不是business,请将重写规则第一个参数的开头替换为实际使用的前缀。
2. 手动刷新重写规则
代码添加完成后,进入WordPress后台「设置」-「固定链接」页面,不需要修改任何配置,直接点击底部的「保存更改」按钮,即可让新的重写规则生效。不要在init钩子中通过代码自动刷新重写规则,会严重影响站点性能。
3. 功能验证
刷新规则后再次访问商品URL,即可正常打开商品页面,不会再返回404。如果需要根据URL中的供应商slug做额外的权限校验、数据筛选等逻辑,可以在pre_get_posts钩子中获取vendor_slug查询变量做对应处理。
内容的提问来源于stack exchange,提问作者Daniel Garcia Sanchez
相关产品推荐
相关产品推荐

