类别页面不应显示子类别

时间:2015-02-09 17:33:09

标签: wordpress

我需要每个类别的Wordpress只显示自己的帖子,而不是其子类别的帖子。这是怎么做到的?

我需要子类别中的帖子只显示在子类别中,而不是显示在父类别中(我只想查看为该父类别标记的帖子)。 但是,在父类别中,我会将所有标记的帖子显示在该父类别的子类别中。

例如,如果我有类别“汽车”并且在其下面,子类别“菲亚特”,“福特”,“本田”,我看到菲亚特在子类别“菲亚特”和父类别“汽车”中发布。

我们如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

利用parse_tax_query filter排除当前类别的儿童

您可以尝试这样的事情:(需要php 5.3 +

add_filter( 'parse_tax_query', function ( $query ) {
    if ( 
        ! is_admin() 
        && $query->is_main_query()
        && $query->is_category()
    ) {
        $query->tax_query->queries[0]['include_children'] = 0;
    }
});

答案 1 :(得分:0)

仅适用于 WordPress> = 3.3

在你的functions.php主题文件中:

add_filter('pre_get_posts','hide_subcategories_function',20,1);

function hide_subcategories_function($the_query) {
    if(get_bloginfo('version') >= 3.3 && function_exists('is_main_query')) {

        if(!$the_query->is_admin && !$the_query->is_preview && $the_query->query_vars['suppress_filters'] == false && $the_query->is_category && $the_query->is_main_query()) {

            $cat = get_term_by( 'slug', $the_query->query_vars['category_name'], 'category');

            $the_query->set('category__in',array($cat->term_id));

        }

    }
    return $the_query ;
}