如何修改分类页面上的查询以只显示粘性帖子?

时间:2016-11-30 作者:jrcollins

我正在使用以下代码过滤分类页面上的帖子,以便只显示粘性帖子。

add_action( \'pre_get_posts\', function( \\WP_Query $q ) {
if( ! is_admin() && $q->is_category() && $q->is_main_query() ) {
    $sticky_posts = get_option( \'sticky_posts\' );
    if( ! empty( $sticky_posts ) )
        $q->set( \'post__in\', (array) $sticky_posts );
}
} );
?>
问题是,如果没有粘性帖子,则会显示该类别的所有帖子。如果没有粘性帖子,我不想显示任何帖子。

2 个回复
最合适的回答,由SO网友:Ellimist 整理而成

只需将“post\\uu in”设置为空数组。

add_action( \'pre_get_posts\', function( \\WP_Query $q ) {
if( ! is_admin() && $q->is_category() && $q->is_main_query() ) {
    $sticky_posts = get_option( \'sticky_posts\' );
    //If there are sticky posts
    if( ! empty( $sticky_posts ) ) {
        $q->set( \'post__in\', (array) $sticky_posts );
    }
    //If not
    else {
        $q->set( \'post__in\', array(0) );
    }
}
} );

SO网友:fmeaddons

使用else 的声明no result found

<?php 
add_action( \'pre_get_posts\', function( \\WP_Query $q ) {
if( ! is_admin() && $q->is_category() && $q->is_main_query() ) {
    $sticky_posts = get_option( \'sticky_posts\' );
    if( ! empty( $sticky_posts ) ) {
        $q->set( \'post__in\', (array) $sticky_posts );
} else {

    echo "No posts found";

}
}
} );
?>

相关推荐