我面临以下问题:
我希望我的产品和产品类别具有相同的url基础。E、 g。www.example.com/products/product-category
www.example.com/products/sample-product
尝试通过Permalinks部分实现这一点会导致所有产品都出现404。我知道我可以使用不同的名称作为类别基础,例如“foo”(www.example.com/foo/product category),然后使用以下代码将其重新写入“products”:
add_filter(\'product_cat_rewrite_rules\',\'update_base_category_rewrite_rule\');
function update_base_category_rewrite_rule($category_rewrite){
$new_category_rewrite = $category_rewrite;
foreach($category_rewrite as $key => $value){
$xyz = str_replace(\'foo\', \'products\', $key);
$new_category_rewrite[$xyz] = $value;
}
return $new_category_rewrite;
}
如上所述的问题是,正如预期的那样,网站上的所有类别链接仍然以
www.example.com/foo/product-category
在此方面的任何帮助都将不胜感激。
最合适的回答,由SO网友:Mark Kaplun 整理而成
你不能现实地做这样的事。Wordpress URL解析不够“聪明”,无法在同一“前缀”下处理不同类型的内容。Wordpress将尝试将URL解析为产品or 类别,这取决于它们在重写表中的特定顺序,并且在其他类型上将失败。
如果您必须有这样一个方案,您可以覆盖重写处理并实现自己的方案(本网站上可能很少有示例),但我认为这样一件事所需的工作和引入的代码的复杂性将不值得(代码本身不应该很复杂,但无论谁在你经历了一个WTF的大时刻后维护代码,都会试图理解正在发生的事情)。