我想从我的主页中排除某个类别,但我的代码无效:
<?php if( $category_items_query->have_posts() ): ?>
<div class="row columns-layout content-grid">
<?php if( $layout === 'two' ): ?>
<!-- EXCLUDE CATEGORY 17 -->
<?php query_posts($query_string . '&cat=-17'); ?>
<?php while( $category_items_query->have_posts() ): $category_items_query->the_post(); ?>
<div class="col-lg-6 col-md-6 recent-item two-columns post-box">
<?php get_template_part( 'parts/home-content', 'columns' ); ?>
</div><!-- .two-columns -->
<?php endwhile; ?>
<?php endif; ?>
</div><!-- .row -->
<?php endif; ?>
请帮帮我。 谢谢 吉
答案 0 :(得分:1)
请不要使用query_posts因为它是无效的并重新运行sql查询并且还会搞砸你的分页..
而是使用pre_get_posts,例如
function exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'cat', '-17' );
}
}
add_action( 'pre_get_posts', 'exclude_category' );
答案 1 :(得分:0)
首先,你必须像下面那样定义全局变量,然后你可以尝试你的代码。
global $query_string;
query_posts($query_string . '&cat=-17');
还有另一种方法可以尝试: 在function.php中:
function exclude_category( $wp_query ) {
$excluded = array( '-1' );
$wp_query->set('category__not_in', $excluded);
set_query_var( 'category__not_in', $excluded );
}
add_action( 'pre_get_posts', 'demo_exclude_category' );
在您的代码中(您可以按照自己的方式使用):
class Exclude_Cat_Plugin {
public function __construct() {
add_action( 'pre_get_posts', array( $this,'exclude_first_category_posts') );
}
public function exclude_first_category_posts( $wp_query ) {
if ( ! is_search() && ! is_archive() ) {
$excluded = array( '-1' );
$wp_query->set( 'category__not_in', $excluded );
set_query_var( 'category__not_in', $excluded );
}
}
}
我希望它对你有所帮助。