Que fait setup_postdata ($ post)?

11

Le codex le définit comme "Configurer les données de publication globales. 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; 

Pouvez-vous expliquer, s'il vous plaît?

    
posée mattnewbie 15.05.2013 - 21:34

1 réponse

14

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 de l'itération n'était pas $post , vous devrez le faire explicitement ( global $post; $post = $some_other_post; ).

Cependant, il existe de nombreux autres éléments globaux et le but de setup_postdata() est de les remplir 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() par la suite pour rétablir l'état initial des globaux.

    
réponse donnée Rarst 15.05.2013 - 21:40

Lire d'autres questions sur les étiquettes