Do czego służy setup_postdata ($ post)?

13

Kodeks definiuje go jako „Konfigurowanie globalnych danych pocztowych. Pomaga sformatować niestandardowe wyniki zapytania w celu użycia tagów szablonów. ” Naprawdę tego nie rozumiem.

Oto przykład kodu:

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

Czy możesz wyjaśnić?

mattnewbie
źródło

Odpowiedzi:

16

Funkcje znaczników szablonów polegają na zmiennych globalnych w celu uzyskania dostępu do przetwarzanego postu i pobierania danych z niego lub z nim powiązanych.

Główną ich zmienną jest $postsam obiekt postu. W twoim przykładzie nie jest to jednoznaczne, ale dzieje się tak, że twoja pętla przypisuje dane $post, jeśli nazwa dla iteracji nie była $post, musisz to zrobić jawnie ( global $post; $post = $some_other_post;).

Istnieje jednak wiele innych globali i ich celem setup_postdata()jest wypełnienie ich danymi. Jeśli spojrzysz na źródło, to są to:

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

Zauważ, że w większości przypadków powinieneś wp_reset_postdata()później dzwonić, aby przywrócić globały do ​​ich pierwotnego stanu.

Rarst
źródło