我想从我的主页中排除一个类别,但我的代码不起作用:
<?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; ?>请帮帮我。谢谢Guido
发布于 2015-09-17 18:13:24
请不要使用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' );发布于 2015-09-17 20:16:11
首先你必须像下面这样定义全局变量,然后你可以尝试你的代码。
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 );
}
}
}我希望这对你有帮助。
https://stackoverflow.com/questions/32627571
复制相似问题