从一个类别中排除帖子,但仅当它们不在多个类别中时

时间:2012-12-17 作者:Anthony

我想在Wordpress中排除一个类别。我指的是上的Wordpress Codex页面wp_query 但我有以下问题:

我想从类别1中排除帖子,但如果帖子属于类别1和类别2(或除1以外的任何其他类别),那么我仍然希望它显示出来

1 个回复
SO网友:Nicolai Grossherr

这可以通过获取要显示的类别ID数组来实现。我们可以使用get_terms() 为此:

$taxonomy = array(
    \'category\'
);
$args = array(
    \'exclude\' => array(\'111\'),//id of the category term you want to exclude  
    \'fields\' => \'ids\'
);
$ct_ids = get_terms( $taxonomy, $args );
现在,您可以使用它创建第二个查询WP_Query 通过使用Category Parameter category__in 像这样:

$args = array(
    \'category__in\' => $ct_ids
);
$scnd_query = new WP_Query( $args );
例如,如果您只想为主页执行此操作,则不需要自定义二次查询,您可以通过连接到pre_get_posts 这样的动作:

function show_all_but_category_xyz( $query ) {
    if ( !is_admin() && $query->is_home() && $query->is_main_query() ) {
        $query->set( \'category__in\', $ct_ids );
    }
}
add_action( \'pre_get_posts\', \'show_all_but_category_xyz\' );

结束

相关推荐

Sort post's categories by ID

我有一个博客,其中几个帖子的类别必须先输出,然后再输出其他类别。与其他类别相比,这些类别的ID较低。我正在使用get_the_category_list 但它并没有像我预期的那样工作。这让我很困惑,因为我记得有一个主题做得很好。有人能给我指出正确的方向吗?谢谢<?php get_the_category_list( array( \'orderby\' => \'ID\', \'order\' => \'ASC\' ) ); ?>&