从主页中排除类别,在自己的页面上显示帖子?

时间:2012-02-09 作者:Joe

我创建了一个ID为57的新类别,如何从主页/博客中排除该类别,然后在其自己的页面上列出该类别中的帖子?

这是我的索引。php看起来像

<?php
            $popular_count = 1;
            query_posts( array( \'orderby\' => \'comment_count\',\'posts_per_page\' => 6 ) );
            if ( have_posts() ) : while ( have_posts() ) : the_post();
            ?>
因此,如何添加这些代码有点令人困惑

2 个回复
SO网友:Stephen Harris

为了排除类别(或任何其他分类法)术语,您可以连接到pre_get_posts:

add_action(\'pre_get_posts\', \'wpse41820_exclude_cat_from_front_page\');
function wpse41820_exclude_cat_from_front_page( $query ){
    if( $query->is_main_query() && is_front_page() ){
        $tax_query = array(array(
            \'taxonomy\' => \'category\',
            \'field\' => \'id\',
            \'terms\' => array( 57 ),
            \'operator\' => \'NOT IN\'
           ));

        $query->set(\'tax_query\',$tax_query);
    }
    return $query;
}
要排除段塞,请更改$tax_query 因此:

        $tax_query = array(array(
            \'taxonomy\' => \'category\',
            \'field\' => \'slug\',
            \'terms\' => array( \'term-slug\' ),
            \'operator\' => \'NOT IN\'
           ));

SO网友:Kyle

对两者使用自定义查询。

   <?php if (have_posts()) : 

        $args = array(
                          \'orderby\' => \'comment_count\',
                      \'posts_per_page\' => 6,
                      \'cat\' => -57,
                    );

        $my_query = new WP_Query($args);

        while ($my_query->have_posts()) : $my_query->the_post(); ?>
类别前面的负号表示排除。

我对您提供的代码进行了编辑。

结束