在一个新的主题项目中,我创建了一个名为products的自定义帖子类型,它有自己的自定义分类法。我希望URL结构为:
http://example.com/products/main_category/subcategory1/subcategory2/postname/
我在这里找到了这个解决方案:
function filter_post_type_link($link, $post)
{
if ($post->post_type == \'products\')
return $link;
if ($cats = get_the_terms($post->ID, \'product_categories\'))
$link = str_replace(\'%product_categories%\', array_pop($cats)->slug, $link);
return $link;
}
add_filter(\'post_type_link\', \'filter_post_type_link\', 10, 2);
使用此解决方案,我能够创建以下结构:
http://example.com/products/category/postname/
所以子类别仍然不会显示在URL中。。。
另一个问题是,当我设置分类法时hierarchical => true
当我浏览产品类别时,url如下所示:
http://example.com/products/category1/subcategory1-category1/subcategory2-subcategory1-category1/
以及何时
hierarchical => true
如果存在,我上面提到的代码将停止工作。
因此,我想通过产品URL实现的基本目标是:如果产品属于主要类别:
http://example.com/products/main_category/postname/
如果产品属于子类别1:
http://example.com/products/main_category/subcategory1/postname/
如果产品属于子类别2:
http://example.com/products/main_category/subcategory1/subcategory2/postname/
当然,如果我从上面的URL中删除帖子名称,wp应该显示相应的类别。这将是一个很好的层次结构。
你知道实现这一目标的方法吗?
致以最良好的祝愿,马特