Que fait setup_postdata ($ post)?

13

Le codex le définit comme «Configurer les données de publication mondiales. Aide à formater les résultats de requête personnalisés pour l'utilisation des balises de modèle. " Je ne comprends pas vraiment ça.

Voici un exemple de code:

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

Pouvez-vous expliquer?

mattnewbie
la source

Réponses:

16

Les fonctions de balise de modèle s'appuient sur des variables globales pour accéder au post en cours de traitement et en extraire des données ou y être liées.

La variable principale d'entre eux est celle $postqui détient l'objet post lui-même. Dans votre exemple, ce n'est pas explicite, mais ce qui se passe, c'est que votre boucle assigne des données à $post, si le nom pour l'itération n'était pas, $postvous devriez le faire explicitement ( global $post; $post = $some_other_post;).

Cependant, il existe de nombreux autres globaux et le but de setup_postdata()est de les remplir avec des données. Si vous regardez la source à savoir qu'ils sont:

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

Notez que dans la plupart des cas, vous devriez appeler wp_reset_postdata()après pour ramener les globaux à leur état d'origine.

Rarst
la source