Wie platziere ich eine Schleife innerhalb einer anderen Schleife?

Ich habe zwei Schleifen eingerichtet mit WP_Query: $latest und $popular dass ich arbeite, um in diesem Beispiel Layout einzurichten:

Neueste beliebt

Bildbeschreibung hier eingeben

Beispiel HTML-Ausgabe

 
[...]

Einfach ausgedrückt: Die Posts und Posts werden nebeneinander verschoben und alle paar Posts auseinander gebrochen, um einen Anzeigenblock voller Breite aufzunehmen.

Meine Schleife

 
1000000, 'order' => 'DESC', 'orderby' => 'date' ); $latest = new WP_Query( $args1 ); if ( $latest -> have_posts() ) : $count = 0; while ( $latest -> have_posts() ) : $latest -> the_post(); $count++; if ( $count % 5 == 0 ) : get_template_part( 'template', 'post' ); ?>

Im Moment ist dies so eingerichtet, dass jeder fünfte Post in der $latest Schleife die $popular Schleife und ein Ad-Block hinzugefügt werden.

Ich verstehe, warum das nicht funktioniert … Weil jeder fünfte Post, wenn die $popular Schleife aufgerufen wird, beginnt sie wieder, statt in der Reihenfolge fortzufahren.

Irgendwelche Ideen, wie ich das schaffen kann?

Solutions Collecting From Web of "Wie platziere ich eine Schleife innerhalb einer anderen Schleife?"

Versuchen Sie Folgendes: Wir deklarieren einen Incrementer an der Spitze unserer Outer-Loop namens $popularLoop , um zu verfolgen, wie viele beliebte Loops wir durchlaufen haben. Wir gehen davon aus, dass wir mindestens 1 erreichen werden.

Innerhalb unserer inneren Schleife (beliebt) müssen wir einstellen, wie viele Beiträge pro Seite wir laden werden, multiple nach wievielen populären Loops, die wir durchlaufen haben und die uns unseren Offset geben werden. Am Ende unserer Inner Loop $popularLoop wir $popularLoop damit unser Offset konsistent bleibt:

 
< ?php $args1 = array ( 'posts_per_page' => 1000000, 'order' => 'DESC', 'orderby' => 'date' ); $latest = new WP_Query( $args1 ); $popularLoop = 0; if ( $latest -> have_posts() ) : $count = 0; while ( $latest -> have_posts() ) : $latest -> the_post(); $count++; if ( $count % 5 == 0 ) : get_template_part( 'template', 'post' ); ?>
< ?php get_template_part( 'template', 'ad' ); ?>
< ?php else : get_template_part( 'template', 'post' ); endif; endwhile; endif; wp_reset_postdata(); ?>