Можно ли изменить порядок списка сообщений, выведенных из цикла?

Я хочу вывести три последних сообщения из определенной категории. У меня есть код для этого, но я пытаюсь выяснить, есть ли способ изменить порядок этих трех сообщений при отображении / вытягивании данных?

Текущий код:

'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();?> 

Предполагая, что вы ссылаетесь на код этого ответа

Принимая запрос из этого ответа

 $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() ) : поэтому он не запускается, когда запрос возвращает пустой набор.

Когда у вас есть массив из трех последних сообщений, вы можете использовать array_reverse() ( руководство php ). Таким образом, вы все равно получите три последних сообщения, которые вы уже делаете, но теперь они находятся в обратном порядке.

 $array_of_three_recent_posts = array_reverse($array_of_three_recent_posts); 

Арги:

  $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 }