是否有可能颠倒从循环中拉出的帖子列表的顺序?

时间:2016-08-11 作者:OscarGuy

我想从一个特定类别中提取最近的三篇帖子。我有这样做的代码,但我想知道在显示/提取数据时,是否有办法颠倒这三篇文章的顺序?

当前代码:

 \'category_name\' => \'dvd-report\',
 \'posts_per_page\' => 3,

 ) );

 if ($cinemasight_header_query->have_posts()) :

 while($cinemasight_header_query->have_posts()) :
 $cinemasight_header_query->the_post();?>

 <span class="Categories_Lower_Right">
 <a href="<?php the_permalink() ?>"><?php the_title(); ?></a><br />
 </span>

 <?php endwhile;

 endif;

 wp_reset_postdata();?>

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

假设您引用的是this answer

从该答案中提取问题

$args = array( 
  \'category_name\'  => \'your-category-slug\',
  \'posts_per_page\' => 3,
);

$wpse_235685_query = new WP_Query( $args );
然后,要颠倒结果的顺序,需要修改查询$posts 对象,像这样

$temp_posts = $wpse_235685_query->posts;  // store the posts to work with
$wpse_235685_query->posts = array(); // empty the $posts object
$wpse_235685_query->posts = array_reverse($temp_post); // set back the object to use new reverse order
当然,这可以通过去掉这样的临时变量来简化

$wpse_235685_query->posts = array_reverse( $wpse_235685_query->posts );
此代码应介于if( $wpse_235685_query->have_posts() ) : 还有你的while( $wpse_235685_query->have_posts() ) : 因此,当查询返回空集时,它不会运行。

SO网友:KnightHawk

一旦有了包含三篇最新帖子的数组,就可以使用array_reverse() (php manual). 这样,你仍然可以像之前一样获得最近的三篇帖子,但现在它们的顺序正好相反。

$array_of_three_recent_posts = array_reverse($array_of_three_recent_posts);

SO网友:Frank Thoeny

参数:

    $args = array(
        \'posts_per_page\'      => 3,
        \'category_name\'       => \'staff\',   
        \'order\'               => \'ASC\',
       \'orderby\'              => \'date\'
    );
查询:

    $the_query = new WP_Query( $args );

    if ( $the_query->have_posts() ) {

      echo \'<ul>\';

       while ( $the_query->have_posts() ) {
           $the_query->the_post();
           echo \'<li>\' . get_the_title() . \'</li>\';
       }

      echo \'</ul>\';
      /* Restore original Post Data */
      wp_reset_postdata();

   } else {
    // no posts found
  }

相关推荐

当in_the_loop()为假时,何时以及为什么is_Single(‘my_cpt’)为真?

我正在使用模板系统的示例代码。此地址的页码:http://project.test/my_cpt/hello-post/.无法理解原因is_singular( \'my_cpt\' ) 是true 虽然in_the_loop() 是false.在页面模板中The Loop "E;“工程”:if ( have_posts() ) { while ( have_posts() ) { the_post(); ?>