我想在首页中获得唯一的顶级父类别(cat_id = 1)列表。 为此我在主页上写了这个While循环。
<div class="left col-xs-12 col-md-8 col-lg-9">
<?php
while(have_posts()) {
the_post(); ?>
<div class="content-block col-xs-12">
<h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
<hr class="color-strip">
<p><?php echo wp_trim_words(get_the_content(), 11); ?></p>
<p><a href="<?php the_permalink(); ?>">Continue reading »</a></p>
<div class="tags"><ul><li><?php the_tags(); ?></li></ul></div>
</div>
<hr/>
<?php }?>
</div>
但它带来了所有子类别。我想保留一个类别的列表。在if条件下我需要做些什么改变。
答案 0 :(得分:0)
以下鳕鱼部分解决了我的问题。在functions.php中编写函数。
function exclude_category($query) {
if ( $query->is_home() ) {
$query->set('cat', '-5,-6');
}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');
答案 1 :(得分:0)
您可以使用get_categories()
获取类别,然后您可以获得所有顶级类别:
$categories = get_categories(
array(
'parent' => 0
)
);
然后,这样的事情对你来说只适用于顶级类别中的帖子。
$categories = get_categories(
array(
'parent' => 0
)
);
$categoryArray = array();
foreach( $categories as $category ) {
$categoryArray[] = $category->ID;
}
function exclude_category($query) {
if ( $query->is_home() ) {
$query->set( 'cat', implode(',', $categoryArray) );
}
return $query;
}
add_filter('pre_get_posts', 'exclude_category');
这将获得所有顶级类别,然后在主查询中设置它们。