Cosa fa setup_postdata ($ post)?


13

Il codice lo definisce come "Imposta i dati postali globali. Aiuta a formattare i risultati delle query personalizzate per l'utilizzo dei tag modello. " Non lo capisco davvero.

Ecco un esempio di codice:

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

Per favore, puoi spiegare?

Risposte:


16

Le funzioni dei tag modello si basano su variabili globali per accedere ai post in fase di elaborazione e recuperare i dati da esso o ad essi correlati.

La variabile principale di questi è $postche contiene l'oggetto post stesso. Nel tuo esempio non è esplicito, ma ciò che sta accadendo è che il tuo loop assegna i dati a $post, se il nome per l'iterazione non fosse che $postdovresti farlo esplicitamente ( global $post; $post = $some_other_post;).

Tuttavia, ci sono molti altri globi e lo scopo setup_postdata()è quello di riempirli con i dati. Se guardi alla fonte, cioè sono:

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

Nota che nella maggior parte dei casi dovresti chiamare in wp_reset_postdata()seguito per riportare i globali al loro stato originale.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.