我需要每个类别的Wordpress只显示自己的帖子,而不是其子类别的帖子。这是怎么做到的?
我需要子类别中的帖子只显示在子类别中,而不是显示在父类别中(我只想查看为该父类别标记的帖子)。 但是,在父类别中,我会将所有标记的帖子显示在该父类别的子类别中。
例如,如果我有类别“汽车”并且在其下面,子类别“菲亚特”,“福特”,“本田”,我看到菲亚特在子类别“菲亚特”和父类别“汽车”中发布。
我们如何解决这个问题?
答案 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 ;
}