Erhalte die letzten 5 Posts und einen spezifischen Post und sortiere in einer bestimmten Reihenfolge

Ich bin auf der Suche nach einem Rat, wie man eine Bildergalerie macht. Es ist ein besonderes bisschen eine Galerie, weil ich die letzten 5 Post und einen festen Post für insgesamt 6 Beiträge in einer bestimmten Reihenfolge zeigen würde. dh der feste Posten muss der dritte in der Liste sein. Die einzige Methode, die ich glaube, dass es möglich ist, 3 Schleifen zu erstellen, die erste, um die letzten zwei Post zu sehen, die zweite, um den festen Post anzuzeigen (von ID), und die dritte, um die letzten drei Posts zu sehen. So etwas (wahrscheinlich ist es nicht korrekt):

have_posts() ) : $my_query->the_post(); $do_not_duplicate = $post->ID; ?>   have_posts() ) : $my_query2->the_post(); ?>   have_posts() ) : $my_query3>the_post(); if ( $post->ID == $do_not_duplicate ) continue; // don't show the same post of the first loop ?>   

Es gibt einen anderen Weg, dies zu tun, ohne viele Schleifen zu machen, wenn man bedenkt, dass es bereits einen auf der Seite gibt?

Danke

Solutions Collecting From Web of "Erhalte die letzten 5 Posts und einen spezifischen Post und sortiere in einer bestimmten Reihenfolge"

Ich kann mir keine Möglichkeit vorstellen, die neuesten 5 Posts plus einen bestimmten in einer einzigen Abfrage ohne SQL zu erhalten.

Wenn es Ihnen nichts ausmacht, zwei Abfragen zu verwenden, ist dies meiner Meinung nach eine einfache Möglichkeit, das zu tun, was Sie beabsichtigen:

 //Get the latest 5 posts (which happens to be get_posts default 'posts_per_page' value) $posts = get_posts(); //Build up an array with the IDs $latests_posts_ids = wp_list_pluck( $posts, 'ID' ); //Insert the desired ID in the third position $post_id_to_insert = 1; $insert_position = 2; //which equals 3 when starting from 0 array_splice( $latests_posts_ids, $insert_position, 0, $post_id_to_insert ); //Get the posts based on the IDs and do not alter their order $args = array( 'posts_per_page' => 6, 'post__in' => $latests_posts_ids, 'orderby' => 'post__in' ); $posts = get_posts( $args ); //Parse the posts foreach( $posts as $post ) : setup_postdata( $post ); the_title(); endforeach; 

Ich verwende get_posts() aber Sie können stattdessen WP_query verwenden.

WordPress verarbeitet bereits mögliche Duplikate in post__in , was der Fall wäre, wenn der Beitrag, den Sie einfügen möchten, einer der letzten 5 ist.

Eine Möglichkeit wäre, den integrierten Zähler zu verwenden, um zu sagen, wie oft Sie die Schleife bereits durchlaufen haben, und dann get_post für die festgelegte Post-ID zu verwenden, nachdem Sie dreimal get_post

  < ?php $my_query = new WP_Query( 'posts_per_page=5' ); // get the latest 5 posts while ( $my_query->have_posts() ) : $my_query->the_post(); $do_not_duplicate = $post->ID; ?> < ?php the_title(); ?> < ?php if(3 == $my_query->current_post) { $fixed_post = get_post(1); // Do what you need to with $fixed_post... } endwhile; ?> 

Weitere Informationen finden Sie in der wordpress-Entwicklerreferenz für get_post.

(Editierter Code zur Verwendung eines eingebauten Zählers gemäß dem Vorschlag von Milo in Kommentaren.)