首先,在我们开始讨论基本问题之前,有一个hardly ever 使用的理由query_posts
. 它应该被视为不推荐使用,但大多数情况下都是这样。
它不会重置,但会在已经执行的主查询之后覆盖该查询。
更确切地说,使用get_posts
函数或WP_Query
类别:
$args = array(
\'post__in\' => get_option( \'sticky_posts\' ),
\'post_status\' => \'publish\'
);
$stickies = new WP_Query( $args );
if ( $stickies->have_posts() ) {
while ( $stickies->have_posts() ) {
$stickies->the_post();
// do something
}
}
// reset the $post global to its previous state
wp_reset_postdata();
如果无论是否找到粘性帖子,都希望更改主查询以不返回任何内容(在主页上),请使用
pre_get_posts
措施:
function wpse_96219_nothing_on_home( $query ) {
if ( is_home() ) {
$query->set( \'posts_per_page\', 0 );
}
}
add_action( \'pre_get_posts\', \'wpse_96219_nothing_on_home\' );