WordPress默认会在循环(Loop)中显示置顶文章,但是在主题wordpress开发中,有特别需求wordpress排除置顶文章,你需要在 WordPress 循环中排除置顶文章,下面呢瑞课提供几种wordpress排除置顶文章方法。

wordpress排除置顶文章


<?php
$args = array(
	'posts_per_page' => 10, //每页显示10篇文章
	'ignore_sticky_posts' => 1 //取消文章置顶
);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
 
//在这里插入循环内部代码
 
endwhile; //结束while
endif; //结束if
?>

'ignore_sticky_posts' => 1 就是关键参数,取消文章置顶(即不在顶部显示),按照普通方式输出文章。

wordpress排除置顶文章


<?php
$the_query = new WP_Query( array( 'post__not_in' => get_option( 'sticky_posts' ) ) );
if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post();
 
//在这里插入循环内部代码
 
endwhile; //结束while
endif; //结束if
?>

'post__not_in' => get_option( 'sticky_posts' ) 是关键参数,彻底排除置顶文章(凡是置顶文章都不输出)。
假如你在已经在首页的其他地方(比如幻灯中)显示了置顶文章,那么,接下来的主循环中排除置顶文章,这样就可以避免重复显示。

wordpress排除置顶文章


<?php
    $post_num = 10; // 显示文章的数量.
    $args=array(
    'post_status' => 'publish',
    'paged' => $paged,
    'caller_get_posts' => 1,
    'posts_per_page' => $post_num
    );
    query_posts($args);
    // 主循环
    if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
    <li><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></li>
<?php endwhile; else: endif; wp_reset_query();?>

如果想把最新文章列表和置顶文章列表分开显示,可在调用最新文章列表时发现,如果wordpress博客有置顶文章,那 么最新文章列表也会把博客的置顶文章显示在最前面,但是可以通过设置置顶文章的参数caller_get_posts排除列表中的最新文章。