带有子子类别和帖子名称的固定链接

时间:2012-09-13 作者:Allanon

在一个新的主题项目中,我创建了一个名为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应该显示相应的类别。这将是一个很好的层次结构。

你知道实现这一目标的方法吗?

致以最良好的祝愿,马特

1 个回复
SO网友:Nathan Powell

去掉你的过滤器。确保您使用\'rewrite\' => array( \'hierarchical\' => \'true\' ) 在您的register_taxonomy() 作用别忘了刷新重写规则。有关详细信息,请参阅此页:Codex

结束

相关推荐

wordpress permalinks tweeks

在创建任何帖子后,我都会遵循permalink结构。。。http://domain.com/wp/postname根据Permalink设置。。。。职位名称:http://domain.com/wp/sample-post/这个永久链接对于页面来说很好,但我如何才能像下面这样添加blog作为前缀。。。。http://domain.com/wp/blog/文章标题http://domain.com/wp/blog/类别/职位名称如果你需要更多信息,请告诉我,谢谢。