Wie man die 5 neuesten Posttitel anzeigt, aber nur 1 von einer bestimmten Kategorie erlaubt

Die Frage muss wohl geklärt werden, also gehe ich hier hin: Ich baue ein Karussell mit den Titeln der 5 neuesten Artikel.

Aus einer bestimmten Kategorie (in meinem Fall heißt Welle) sollte jedoch nur ein Beitrag angezeigt werden, obwohl die 5 letzten Beiträge diese Kategorie möglicherweise mehrfach enthalten haben. Wenn dies der Fall ist, sollte es den neuesten anzeigen, aber die folgenden überspringen und zum nächsten Element in der Abfrage springen.

Ich arbeite mit zwei Loop-functionen. Der erste prüft, ob es in der Abfrage Übergewichtskategorien gibt, springt ggf. zum nächsten und wiederholt die ganze function, indem er der Anzahl der Posts, die die Abfrage anzeigen soll, 1 bis zur Anzeige von 5 Posts auch ohne die überschüssigen Schachtelkategorien hinzufügt . Es wird dann eine function ausführen, wobei die Schleife tatsächlich die Post-Titel anzeigt. Das Problem ist, dass die Abfrage oft wiederholt werden muss, und ich bin ziemlich sicher, dass dies nicht effizient ist.

Vielleicht kann mir jemand sagen, wie man das richtig und effizient macht? Ich habe meinen Code für Klarheit hinzugefügt.

function carouselimages( $postsinloop ) { if ( !$postsinloop) { $postsinloop = 5; } $i = 0; $schaft = 0; $schaft_duplicate_query = new WP_Query('posts_per_page='.$postsinloop); while($schaft_duplicate_query->have_posts()) : $schaft_duplicate_query->the_post(); $category = get_the_category(); $category = $category[0]->slug; if ( $category == 'schaft' ) { $schaft++; if ( $schaft >= 2 ) { continue; } } $i++; endwhile; wp_reset_postdata(); $postsinloop++; if ( $i < 5 ) { carouselimages( $postsinloop ); } if ( $i == 5 ) { carouselloop($postsinloop); } } 

Solutions Collecting From Web of "Wie man die 5 neuesten Posttitel anzeigt, aber nur 1 von einer bestimmten Kategorie erlaubt"

Sie können eine Abfrage für die letzten 4 Beiträge ohne die Kategorie “category” durchführen und dann eine weitere Abfrage für den letzten Beitrag durchführen. schaft sich das Datum des einzelnen schaft und überprüfen Sie es mit den Daten der anderen Pfosten, während Sie sie ausgeben, und setzen Sie sie an der richtigen Stelle ein.

BEARBEITEN

Zwei Schleifenbeispiel:

 $category = 1; // category to exclude from 1st / use for 2nd query $first_args = array( 'posts_per_page' => 4, 'category__not_in' => $category ); $second_args = array( 'posts_per_page' => 1, 'cat' => $category ); $first_query = new WP_Query( $first_args ); $second_query = new WP_Query( $second_args ); $previous_date = ''; while( $first_query->have_posts() ): $first_query->the_post(); // insert post from 2nd query if its post date is greater than this post date // but less than the previous, or the previous is empty because it's the first if( $second_query->post->post_date > $post->post_date && ( $second_query->post->post_date < $previous_date || $previous_date = '' ) ): $second_query->the_post(); // output post from second query the_title(); // reset post global $post = $first_query->post; endif; // output post from first query the_title(); $previous_date = $post->post_date; endwhile;