我用下面的代码创建了一个blognews.php页面(它显示每月存档的最新新闻),以排除某些类别。
$args = array(
'post_type' => 'post',
'post_status' => 'publish',
'category__in' => 54,
'category__not_in' => 3 ,
'order' => 'DESC'
);
$query = new WP_Query($args);
,它工作,文章在这个类别下不显示。但是当我对archive.php做同样的事情时,我点击一个月,我看到排除类别下的帖子。我试过这个,但它不工作:
<?php if ( have_posts() ) : ?>
<?php
query_posts( array( 'category__and' => array(54), 'posts_per_page' => 20, 'orderby' => 'title', 'order' => 'DESC' ) );
while ($query->have_posts()):
$query->the_post();
get_template_part( 'template-parts/content', 'excerpt' );
是否有一个简单的方法来排除更多的类别从blognews.php页面和存档?我的代码有什么问题?或者只显示一个特定的类别,它也会很好。
将此代码添加到functions.php文件
function exclude_category( $query ) {
if ( $query->is_archive() && $query->is_main_query() ) {
$query->set( 'cat', '-3' );
}
}
add_action( 'pre_get_posts', 'exclude_category' );
is_archive为true的所有条件:
if ( $this->is_post_type_archive
$this->is_date
$this->is_author
$this->is_category
$this->is_tag
$this->is_tax )
$this->is_archive = true;