Grouping categories by genre

时间:2013-06-03 作者:Ruriko

我的wordpress视频博客有几个类别。假设该类别可以分为几个类别,例如动作、恐怖、神秘,另一个类别属于动作、恐怖、浪漫

如何将类别分为不同的类型?因为在最基本的结构中,我们将帖子分类。现在我想把类别分成不同的类别

然后可以通过url(例如)在流派中显示类别http://www.domain.com/genre/actions 它将列出其中的所有类别。下面是一个具有此功能的示例站点http://www.anime44.com/anime-genre/Fantasy

2 个回复
最合适的回答,由SO网友:Matthew Boynes 整理而成

在我看来,流派应该有自己的分类法。然后将帖子分配到类别和类型。如果您这样做,您需要做以下几点才能使一切正常工作:

第一register the taxonomy genre.

接下来,假设您使用的是核心帖子和类别,请转到Settings → Permalinks. 将永久链接设置为/genre/%genre%/%category%/%postname%\'/ 以及您的分类基础/genre/all/.

最后,您需要将过滤器添加到post_link 因此,自动生成的链接不包含文本字符串“%genre%”:

function wpse_101766_post_type_link( $permalink, $post ) {
    if ( \'post\' == $post->post_type ) {
        $genre = \'all\';
        if ( false !== strpos( $permalink, \'%genre%\' ) ) {
            $first_genre = wp_get_object_terms( array( $post->ID ), \'genre\', array( \'orderby\' => \'term_id\', \'count\' => 1 ) );
            if ( ! is_wp_error( $first_genre ) && !empty( $first_genre ) ) {
                $first_genre = array_shift( $first_genre );
                $genre = $first_genre->slug;
            }
        }
        return str_replace( \'%genre%\', $genre, $permalink );
    }

    return $permalink;
}
add_filter( \'post_link\', \'wpse_101766_post_type_link\', 10, 2 );
像往常一样,在进行重写更改时,请确保刷新您的重写规则。您在永久链接页面上保存更改时执行了此操作,但如果之后进行了更改,请返回并再次单击“保存更改”。

现在,URL如下所示:(使用“动作”类型、“幻想”类别和“指环王”帖子:

你还可以访问:

  • /genre/all/fantasy/ 列出任何类型幻想类中的所有帖子/genre/action/fantasy,anime/ 列出“动作”类以及“幻想”或“动画”类的所有帖子/genre/action/fantasy+anime/ 列出“动作”类以及“幻想”或“动画”两类中的所有帖子/genre/action,adventure/fantasy+anime/ 要列出“动作”或“冒险”类型以及“幻想”或“动画”两个类别中的所有帖子。。。等等它给你很大的灵活性!

    要按流派列出类别,请创建taxonomy-genre.php 在主题中创建文件。Here\'s a function 要将所有类别“纳入”一个流派,只需这样称呼:

    $category_ids = get_terms_by_overlap( array(
        \'term_ids\' => get_current_object_id(),
        \'get_taxonomy\' => \'category\',
        \'through_taxonomy\' => \'genre\'
    ) );
    
    然后,您可以按照自己的意愿循环此操作。下面是一个基本示例:

    <ul>
        <?php foreach ( $category_ids as $category_id ) : ?>
        <li><a href="<?php echo get_category_link( $category_id ) ?>"><?php echo get_the_category_by_ID( $category_id ) ?></a></li>
        <?php endforeach ?>
    </ul>
    

SO网友:sanchothefat

我建议使用Scribu的Posts 2 Posts插件。

它允许您将帖子映射到其他帖子,就像它们是类似于分类法的类别一样。你这样做的原因是你对电视剧等的分类。。。不会有您想要的丰富数据附加到它们,否则很难将它们分配到多个流派。另外,正如@ggg所说,你也不能有多个类别的父母。

http://wordpress.org/plugins/posts-to-posts/

使用此插件,您可以为电视剧等创建中心帖子。。。根据您的流派类别对其进行分类(或者您可以使用类似的插件创建流派分类法http://wordpress.org/plugins/types/). 之后,您可以为各个剧集创建帖子,并将其连接到您的系列帖子。

posts 2 posts文档如下:

https://github.com/scribu/wp-posts-to-posts/wiki

创建连接后,可以在电视连续剧帖子中使用短代码列出所有连接的帖子(如剧集)。

https://github.com/scribu/wp-posts-to-posts/wiki/Shortcodes

如果您不熟悉WP站点的开发,很难提出不同的方法。希望它能帮助您开始:)

结束

相关推荐

Categories sorting

我正在使用下面的代码来弹出自定义帖子类型及其类别,所以类别1---岗位1---岗位2第二类——岗位1——岗位2——岗位3等。这对我来说很好,但是我希望能够按count对我的类别进行排序,所以orderby=count,这样,在我下面的代码中不起作用的时候,具有大量帖子的类别将排在列表的顶部,知道为什么吗?非常感谢您的帮助 <?php // List posts by the terms for a custom taxonomy of any post type