Führen Sie die Schleife über ein Array von Post-Objekten aus

Bei einem Array von Post-Objekten könnte man die Schleife initialisieren, damit die allgemeinen Schleifenfunktionen verwendet werden können:

$posts = array( /* WP_Post, WP_Post, ... */); while ( have_posts() ) { the_post(); the_title(); } 

Ich bin mir bewusst, dass ich einfach die Array-Elemente durchlaufen und jeder ID die ID jedes Elements übergeben kann, aber aus Gründen, die ich nicht beherrsche, wird der eigentliche WordPress-Loop hier bevorzugt.

Das Array wird von einer function bereitgestellt, die ich nicht ändern kann. Zu Diskussionszwecken könnte es auch von unsialize () kommen .

Solutions Collecting From Web of "Führen Sie die Schleife über ein Array von Post-Objekten aus"

Ich verwende dies in einem meiner benutzerdefinierten Widgets:

 global $post; $posts = array( /* WP_Post, WP_Post, ... */); while (list($i, $post) = each($posts)) : setup_postdata($post); // use the template tags below here if(has_post_thumbnail()): ?>< ?php endif; the_title(); endwhile; // don't forget to restore the main queried object after the loop! wp_reset_postdata(); 

Sie müssen die gesamte Klausel ändern.

  while ( $posts->have_posts() ) { the_post(); the_title(); } 

ABER, es kann nicht funktionieren, weil dieser gut ist, wenn $posts von einem neuen WP_Query () kommt.

Um das $posts Array zu durchlaufen, können Sie Folgendes tun

  foreach($posts as $post){ echo $post->post_title; if($post->ID != 123){ echo $post->post_content; } } 

Sie schreiben, dass Sie die Kontrolle über die Abfrage haben können, suchen Sie im Quellcode des Plugins nach apply_filters , vielleicht gibt es eine Möglichkeit, diese apply_filters zu filtern.

Ich hoffe es hilft !