Verwenden eines WP_Query-Objekts innerhalb der Schleife eines anderen WP_Query-Objekts

Ich erstelle zwei verschiedene WP_Query-Objekte, eines für jeden von zwei verschiedenen Post-Typen, die ich verwende. Beim Erstellen meiner Ausgabe möchte ich eines der Objekte durchlaufen und gleichzeitig das andere Objekt durchlaufen, um Teile davon zusammen auszugeben. Hier ist ein Beispiel für das, was ich gerne erreichen möchte:

$rotator_args = array( 'post_type' => 'rotator', ); $rotator = new WP_Query($rotator_args); $numrotators = $rotator->post_count; $testimonial_args = array( 'post_type' => 'testimonial', 'posts_per_page' => $numrotators, ); $testimonial = new WP_Query($testimonial_args); while ( $rotator->have_posts() ) : $rotator->the_post(); //setup the rotator posts $testimonial->the_post(); //this breaks things, understandably $rotator_image = get_the_post_thumbnail($rotator->ID, 'large'); $testimonial_image = get_the_post_thumbnail($testimonial->ID, 'large'); $return .= '
' . $rotator_image . '
'; $return .= '
' . $testimonial_image . '
'; endwhile; return $return;

Das funktioniert jedoch nicht. $testimonial->the_post(); von $testimonial->the_post(); (und der zugehörige $testimonial related code) behebt die Dinge.

Solutions Collecting From Web of "Verwenden eines WP_Query-Objekts innerhalb der Schleife eines anderen WP_Query-Objekts"

Gehe durch jede Schleife und speichere das Post-Objekt in einem Array. Dann am Ende kombinieren Sie sie. (Dies ist völlig ungeprüft)

https://gist.github.com/1762204

Ich bin mir nicht sicher, ob Sie die beiden Schleifen zusammenführen können, da es nichts gibt, was sie vom Datenstandpunkt trennen könnte. Versuchen Sie, Daten aus einem Testimonial in den Rotator einzufügen?

Edit: Bills Refactor ist viel besser als mein Klebeband Bearbeiten: Zusätzlich wird meine Editierung mit dem gleichen Testimonial bleiben, was nicht einmal das gewünschte Ergebnis war. Nochmals: Bitte sehen Sie Bills Refactor

Das Problem, das Sie haben, ist mit $ Post. Jedes Mal, wenn Sie feuern, enthält der post_ () -Post die entsprechenden Daten. Ich würde etwas wie das Folgende vorschlagen:

 global $post; $rotator_args = array( 'post_type' => 'rotator', ); $rotator = new WP_Query($rotator_args); $numrotators = $rotator->post_count; $testimonial_args = array( 'post_type' => 'testimonial', 'posts_per_page' => $numrotators, ); $testimonial = new WP_Query($testimonial_args); if( $testimonial->have_posts() ) { $testimonial->the_post(); $my_testimonial = $post; } while ( $rotator->have_posts() ) : $rotator->the_post(); //setup the rotator posts $rotator_image = get_the_post_thumbnail($rotator->ID, 'large'); $testimonial_image = get_the_post_thumbnail($my_testimonial->ID, 'large'); $return .= '
' . $rotator_image . '
'; $return .= '
' . $testimonial_image . '
'; endwhile; return $return;

Gibt es Daten, die $ rotator mit $ testimonial verbinden? Wenn nicht, dann sehe ich nicht, was der Punkt ist … Sie haben nur zwei ungleiche Schleifen.