在所有存档类别页面上添加类别

时间:2014-01-17 作者:Saliom

我想知道是否有可能将默认类别WordPress设置为所有类别存档?

我的情况是:我创建了一个视频游戏网站,并将默认类别重命名为“多平台”。但我希望该类别中的所有帖子都显示在其他类别上,例如“PS3”类别。

如果可能,您能帮我访问此功能吗?

Edit: 这里有一个小例子来解释:

Currently:

<“Android”类别的存档仅显示分配了“Android”类别的项目

What I want:

<为“多平台”类别分配帖子将出现在“Android”类别以及所有其他类别的存档部分

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

您需要使用pre\\u get\\u posts挂钩。其中,您可以在其他类别页面上包含默认类别帖子。

function wpse_pre_get_posts( $q )
{
    // its the main query, and its the category page archive
    if( $q->is_main_query() && $q->is_category() ) :

        // get the default selected category id, fallback to 1 (default one id)
        $default_cat = (int) get_option(\'default_category\', 1);

        // if the category page is not the default category page
        if( $default_cat != $q->get_queried_object_id() ):

            // get the already used tax_query arguments
            $tax_query = $q->get(\'tax_query\');

            // add the default one
            $tax_query[] = array(
                \'taxonomy\' => \'category\', 
                \'field\'    => \'term_id\', 
                \'terms\'    => $default_cat 
            );

            // relation should be or, which means either the current category or the default
            $tax_query[\'relation\'] = \'OR\';

            // set the values to query
            $q->set(\'tax_query\', $tax_query );

        endif;

    endif;
}
add_action( \'pre_get_posts\', \'wpse_pre_get_posts\' );
好的,现在这可能与wp\\u query变量冲突,所以下一个解决方案将使用post\\u请求文件管理器,它用于过滤原始查询。

function wpse_posts_request( $request, $q )
{
    global $wpdb;

    // its the main query, and its the category page archive
    if( $q->is_main_query() && $q->is_category() ) :

        // get the default selected category id, fallback to 1 (default one id)
        $default_cat = (int) get_option(\'default_category\', 1);

        // category now
        $cat_now = $q->get(\'cat\');

        // if the category page is not the default category page
        if( $default_cat != $cat_now ):

            $request = str_replace("$wpdb->term_relationships.term_taxonomy_id IN ($cat_now)", "$wpdb->term_relationships.term_taxonomy_id IN ($cat_now, $default_cat)", $request);

        endif;

    endif;

    return $request;
}
add_filter( \'posts_request\', \'wpse_posts_request\', 10, 2 );
就是这样。你都做完了

SO网友:Brad Dalton

您可以使用批量编辑功能向现有类别中的所有帖子添加类别。使用“按类别过滤”功能。

SO网友:Abhik

您可以将帖子分配到多个类别。只需选中您希望在帖子编辑器页面中将帖子分配到的类别之前的复选框,您的帖子就会显示在您选择的所有类别存档中。

只是想让您知道,当您将帖子分配到某个类别时,除非您手动选择该类别,否则它不会自动分配到默认类别。

结束

相关推荐

List of Posts and Categories

我有一个自定义的物种分类法和一个自定义的动物post类型。我想在树状视图中显示它们,如下所示:所有动物Fish (taxonomy term)<鲨鱼(自定义贴子类型)太阳鱼Mammals<猴子斑马列表中的每个项目都将链接到各自的位置。因此,自定义帖子类型链接到动物,分类术语转到分类页面。我知道WordPress列出类别的方法,但我也希望将帖子分组到每个类别下(自定义分类法)。