Schedule Sticky Posts

时间:2012-10-08 作者:Nate

我想通过修改主循环来显示最近发布的两篇粘性帖子。以下循环的简单事件。

然而,如果我计划在将来发布一篇粘性文章,循环就会失败——只显示一篇粘性文章。这就好像它可以看到有一个新的粘性帖子,但由于它被安排好了,所以不会显示出来。然后循环认为它已经显示了我请求的两篇帖子。有什么想法吗?

/* Get all sticky posts */
    $sticky = get_option( \'sticky_posts\' );

    /* Sort the stickies with the newest ones at the top */
    rsort( $sticky );

    /* Get the 2 newest stickies (change 2 for a different number) */
    $sticky = array_slice( $sticky, 0, 2 );

  /* Query sticky posts */
  query_posts( array( \'post__in\' => $sticky, \'ignore_sticky_posts\' => 1 ) );
  while (have_posts()) : the_post();
   the_title();
   the_excerpt(); 
  endwhile();

/* Continue with Page Template */

1 个回复
SO网友:Rarst

问题是,您将查询限制为两个可能的帖子,但默认情况下,它将忽略未来的帖子(因为这是它尚未发布的原因)。

此外,ID订单不保证与日期订单相同。首次创建帖子时保留ID,但发布日期可以自由操作。

query_posts() 是邪恶的,不应该被使用。

因此,您的查询应该是这样的(未测试):

$sticky = new WP_Query( array(
    \'post__in\'            => get_option( \'sticky_posts\' ),
    \'posts_per_page\'      => 2,
    \'ignore_sticky_posts\' => true,
    // date descending is default sort so we don\'t need it explicitly
) );

while ( $sticky->have_posts() ) : $sticky->the_post();
    the_title();
    the_excerpt();
endwhile;

wp_reset_postdata();

结束

相关推荐