Commencer avec un exemple a plus de sens, alors voici un exemple de fonction:
function seo_meta_tags() {
global $post;
if( is_singular() ) {
setup_postdata( $post );
$description = str_replace( '... <a class="read-more" href="' . get_permalink() . '">Cont. reading →</a>', '...', get_the_excerpt() );
wp_reset_postdata();
echo '<meta itemprop="description" name="description" content="' . $description . '">';
}
}
NOTE: Le code n'a pour but que de vous donner une idée de ce que j'essaie d'accomplir et non pas exactement de la façon dont je le fais.
Pour en venir maintenant au fait, setup_postdata( $post )
devrait-il être fermé avec wp_reset_postdata()
comme indiqué dans l'exemple?
Comme setup_postdata
est messing avec des variables globales qui pourraient être (très probablement:are) utilisées par d’autres boucles (y compris The Loop ), vous devriez toujours réinitialiser ces variables à ce qu'elles devraient être - en fonction de la requête principale (c'est-à-dire ce que WordPress pense que l'utilisateur voulait en premier lieu).
De plus, setup_postdata
est fourni avec (une référence à) le $post
global, qui peut être modifié par la suite.
Donc, oui, setup_postdata
devrait être accompagné de wp_reset_postdata
.
Comme vous pouvez le constater dans le code , la fonction reset_postdata
appelle, en fait, setup_postdata
sur l'objet original $post
.