最近发现 WordPress 分类页调用置顶文章时,如果没有置顶文章会自动调用普通文章,我调用置顶文章的代码如下:
<?php
$sticky_posts = get_option( 'sticky_posts' );
$args = array(
'cat'=> $cat,
'post__in' => $sticky_posts,
'posts_per_page' => 2,
);
$query = new WP_Query( $args );
while ( $query->have_posts() ) : $query->the_post();
?>
...
<?php endwhile; wp_reset_query();?>
经过 echo 大法,发现当没有置顶文章时,post__in 这个条件就自动被忽略了,因此临时想了个解决办法,就是判断 $sticky_posts 为空时,给数组加上个 0 ,这样 post__in 就会生成一个查询 id in (0),也就查询不到了。
<?php
$sticky_posts = get_option( 'sticky_posts' );
if(empty($sticky_posts)){
$sticky_posts = [0];
}
$args = array(
'cat'=> $cat,
'post__in' => $sticky_posts,
'posts_per_page' => 2,
);
$query = new WP_Query( $args );
while ( $query->have_posts() ) : $query->the_post();
?>
...
<?php endwhile; wp_reset_query();?>