web-dev-qa-db-fra.com

Que fait setup_postdata ($ post)?

Le codex le définit comme 'Configurer les données globales de publication. Aide à formater les résultats de requête personnalisés pour l'utilisation de 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; 

S'il vous plaît pouvez-vous expliquer?

12
mattnewbie

Les fonctions de balise de modèle reposent sur des variables globales pour accéder à la publication en cours de traitement et récupérer les données correspondantes ou associées.

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

Cependant, il y a beaucoup d'autres globals et le but de setup_postdata() est de les renseigner avec des données. Si vous regardez la source, 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() pour remettre les globales à leur état initial.

15
Rarst