Schleife innerhalb einer Schleife?

Ich verwende ein paar benutzerdefinierte wp_query Loops auf meiner Seite, die erste ruft Nachrichten aus einer bestimmten Kategorie ab und zeigt dann einen kleinen Ausschnitt davon mit dem Permalink an.

Die zweite ist eine andere wp_query, die einen benutzerdefinierten Post-Typ mit einigen erweiterten benutzerdefinierten Feldern erhält.

Das Problem ist, ich möchte eine andere Schleife innerhalb der zweiten, die 3 Beiträge aus dem Nachrichtenbereich mit einem Thumbnail bekommt (im Grunde das Gegenteil der ersten Schleife, wird es alle anderen Kategorien bekommen). Nachdem ich unzählige Artikel über die Schleife gelesen habe, kann ich nicht herausfinden, wie man eine “verschachtelte” Schleife in meiner zweiten Schleife macht. Ich bin sicher, es muss einfach sein, scheint etwas zu sein, was leicht zu tun ist.

Hier ist mein Code mit viel HTML entfernt.

  
latest news
query('cat=5&showposts=1'); ?> have_posts()) : $recentPosts->the_post(); ?>

...

<a href="https://wordpress.stackexchange.com/questions/71724/loop-within-a-loop/">Read it
'headerhome', 'showposts' => 1 ) ); ?> have_posts()) : $portfolio_query->the_post(); ?>

Arbeitscode, obwohl es the_post_thumbnail nicht abrufen wird

 query('showposts=3'); ?> have_posts()) : $inner_query->the_post(); $post=$backup; ?>  

...

<a href="https://wordpress.stackexchange.com/questions/71724/loop-within-a-loop/">Read it

Solutions Collecting From Web of "Schleife innerhalb einer Schleife?"

Sie können beliebig viele Schleifen erstellen, indem Sie weitere WP_Query Objekte WP_Query

 $query = new WP_Query($args); while ($query->have_posts()) : // initialization for $inner_args & backup the current global $post $inner_query = new WP_Query($inner_args); while ($inner_query->have_posts()) : // do something endwhile; // restore the global $post from the previously created backup endwhile; 

ERKLÄRUNG WIE BEANTRAGT

Wann immer Sie ein Schablonen-Tag aufrufen, z. B. the_title(); Es zeigt etwas über den aktuellen Post in der Schleife an. Aber woher weiß er, welcher Beitrag der aktuelle Beitrag ist? Dies geschieht durch Lesen der Informationen aus den globalen Postdata (gespeichert in einer globalen Variable $post )

Wenn Sie eine Schleife verwenden, verwenden Sie immer eine $query->the_post() als erste statement. Diese function setzt diese globalen Daten auf den nächsten Post vom WP_Query Objekt (der vorherige Inhalt ist verloren)

Wenn Sie die innere Schleife aufgerufen haben, gingen die mit der äußeren Schleife verknüpften Postdaten verloren, wenn die innere Schleife zu arbeiten beginnt. Dann findet die function, die Sie nach dem Ende der inneren Schleife verwenden, immer noch nur die Daten der inneren Schleife.

In der Lösung speicherten Sie zuerst die Daten der äußeren Schleife in einer anderen Variablen, bevor der Inhalt verloren ging. Dann funktioniert die Schleife so, wie sie sein soll (alle äußeren Loop-Daten werden gelöscht).

Wenn dann die Arbeit der inneren Schleife abgeschlossen ist, müssen Sie nun die Daten der äußeren Schleife verwenden, aber sie ist aufgrund der inneren Schleife verloren. Hier übernehmen Sie die zuvor gespeicherten Daten und ersetzen sie. Jetzt bist du wieder in der Position, in der du warst, als du die innere Schleife gestartet hast

Sie können dafür auch WP_Query :: reset_postdata () verwenden .

 $query = new WP_Query($args); while ($query->have_posts()) : // initialization for $inner_args & backup the current global $post $inner_query = new WP_Query($inner_args); while ($inner_query->have_posts()) : // do something endwhile; // restore the global $post from the previously created backup $query->reset_postdata(); endwhile;