Ce face setup_postdata($post)?

15 mai 2013, 22:34:13
Vizualizări: 25K
Voturi: 19

Codexul o definește ca 'Configurează datele globale ale postării. Ajută la formatarea rezultatelor interogărilor personalizate pentru utilizarea tag-urilor Template.' Nu înțeleg foarte bine acest lucru.

Iată un exemplu de cod:

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

Funcția setup_postdata($post) este folosită pentru a configura variabilele globale necesare pentru ca funcțiile template WordPress (precum the_title(), the_content(), etc.) să funcționeze corect în timpul unei bucle personalizate de postări. Când se utilizează interogări personalizate în loc de bucla standard WordPress (WP_Query), trebuie să "pregătim" datele postării pentru a putea folosi funcțiile template standard.

0
Toate răspunsurile la întrebare 1
0
21

Funcțiile de tip template tag se bazează pe variabile globale pentru a accesa postarea în curs de procesare și pentru a prelua date din aceasta sau legate de aceasta.

Variabila principală dintre acestea este $post, care conține obiectul postării în sine.

În exemplul tău nu este explicit, dar ceea ce se întâmplă este că bucla ta atribuie date variabilei $post. Dacă numele acesteia nu ar fi fost $post, ar fi trebuit să o numești explicit (global $post; $post = $some_other_post;).

Totuși, există o mulțime de alte variabile globale, iar scopul funcției setup_postdata() este să le umple cu date. Dacă te uiți la sursă, acestea sunt:

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

Reține că în majoritatea cazurilor ar trebui să apelezi wp_reset_postdata() ulterior pentru a readuce variabilele globale la starea lor inițială.

15 mai 2013 22:40:16