固定链接:自定义帖子类型->自定义分类->帖子

时间:2013-08-01 作者:Paul T

我在使用WordPress重写规则时遇到问题,可能需要一些帮助。

我有一个自定义的帖子类型,叫做_shows_.

所有显示都有一个自定义分类类别_show-category_. A._show_ 永远不会有超过一个_show-category_.

我希望我的URL以这种方式路由:

www.mysite.com/shows/  =>  archive-shows.php

www.mysite.com/shows/%category%/ => taxonomy-show-category.php

www.mysite.com/shows/%category%/%postname%/ => single-shows.php
作为一个真实的例子,假设我们有一个_show-category_ “Foo”和a_show_ 标题为“Bar”的帖子,其中包含“Foo”_show-category_. 我希望我的WordPress应用程序如下所示:

www.mysite.com/shows/foo/ => shows all posts under the foo category
www.mysite.com/shows/foo/bar => shows the indivual post
我尽量避免使用插件,但我愿意接受任何解决方案。

1 个回复
最合适的回答,由SO网友:Milo 整理而成

第一register your taxonomy 并设置slug 的参数rewriteshows:

register_taxonomy(
    \'show_category\',
    \'show\',
    array(
        \'rewrite\' => array( \'slug\' => \'shows\', \'with_front\' => false ),
        // your other args...
    )
);
接下来,register your post type 并将slug设置为shows/%show_category%, 和设置has_archive 参数到shows:

register_post_type(
    \'show\',
    array(
        \'rewrite\' => array( \'slug\' => \'shows/%show_category%\', \'with_front\' => false ),
        \'has_archive\' => \'shows\',
        // your other args...
    )
);
最后,将筛选器添加到post_type_link 要替换单个show permalinks中的show类别,请执行以下操作:

function wpa_show_permalinks( $post_link, $post ){
    if ( is_object( $post ) && $post->post_type == \'show\' ){
        $terms = wp_get_object_terms( $post->ID, \'show_category\' );
        if( $terms ){
            return str_replace( \'%show_category%\' , $terms[0]->slug , $post_link );
        }
    }
    return $post_link;
}
add_filter( \'post_type_link\', \'wpa_show_permalinks\', 1, 2 );

EDIT

忘记了has_archive 的参数register_post_type 应设置为shows.

结束

相关推荐

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/类别/职位名称如果你需要更多信息,请告诉我,谢谢。