Was macht setup_postdata ($ post)?

13

Der Codex definiert es als "Globale Postdaten einrichten". Hilft beim Formatieren benutzerdefinierter Abfrageergebnisse für die Verwendung von Vorlagen-Tags. ' Ich verstehe das nicht wirklich.

Hier ist ein Codebeispiel:

global $post;
$args = array( 'numberposts' => -1);
$posts = get_posts($args);
foreach( $posts as $post) : setup_postdata($post);
echo $post->ID;
endforeach; 

Kannst du das bitte erklären?

mattnewbie
quelle

Antworten:

15

Template-Tag-Funktionen verlassen sich auf globale Variablen, um auf die zu verarbeitenden Posts zuzugreifen und Daten von diesen abzurufen oder sich auf diese zu beziehen.

Die Hauptvariable von ihnen ist $postdie, die das Post-Objekt selbst enthält. In Ihrem Beispiel ist dies nicht explizit, aber was passiert, ist, dass Ihre Schleife Daten zuweist $post. Wenn der Name für die Iteration nicht vorhanden $postwäre, müssten Sie dies explizit tun ( global $post; $post = $some_other_post;).

Es gibt jedoch eine Reihe anderer globaler Unternehmen, deren Zweck es setup_postdata()ist, sie mit Daten zu füllen. Wenn Sie auf die Quelle schauen, sind sie nämlich:

global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages;

Beachten Sie, dass Sie in den meisten Fällen später anrufen sollten, um die wp_reset_postdata()Globals in ihren ursprünglichen Zustand zurückzusetzen.

Rarst
quelle