Je suis déroutant d'utiliser la variable globale $post
. Est-ce qu'il utilise une boucle intérieure ou une boucle extérieure? Quel est l'avantage de l'utiliser en boucle interne et externe?
Le $post
global est défini par $wp_query->the_post()
. Comme $post
est défini par la requête principale et par le fait que les modèles sont définis dans la portée de la variable globale, il est disponible dans tout le modèle. Il n'est donc pas nécessaire d'appeler explicitement le $post
global lorsque vous vous trouvez dans le modèle spécifié en tant qu'objets WP_Post
. peut être consulté n'importe où. Vous pouvez accéder aux objets WP_Post
simplement en les appelant directement, par exemple $post->ID
pour récupérer l'ID de page sur un modèle de page.
Lorsque vous devez accéder à des données de publication en dehors d'un modèle, par exemple, dans une fonction ou dans un widget, vous devez appeler le $post
global pour que les données de la publication soient utilisables.
Dans la boucle, vous avez des fonctions telles que:
the_ID()
ou get_the_ID()
qui retournent $post->ID
the_title()
ou get_the_title()
qui retournent $post->post_title
the_content()
ou get_the_content()
qui retournent $post->post_content
etc.
Mais ils appliquent des filtres et des codes abrégés pour le message que vous consultez. Pour plus de détails sur le fonctionnement de ces fonctions, visitez le référence du code WordPress
Dans une boucle, vous devez TOUJOURS utiliser les fonctions créées pour vous. Ils ont une raison. Comme je l'ai dit précédemment: ils appliquent des filtres et analysent des codes courts. Vous devez également lire l'article dans la variable globale du codex WordPress.
À mon avis, vous ne devriez utiliser $post
que lorsque vous n'avez pas d'autre choix. Par exemple: Vous voulez, pour une raison quelconque, le contenu non filtré de l'article.
Dans la boucle , les fonctions décrites ci-dessus et leurs équivalents renvoient des informations sur la publication en cours dans la boucle. Si vous êtes sur une page de catégorie/archive en utilisant $post
en dehors de la boucle, vous obtiendrez les informations du dernier $post
de la boucle (si utilisé après) ou aucune requête/quoi que ce soit ne s’est produite avant l’initialisation de la valeur.
NOTE c'est une variable globale qui change dans La boucle et si vous l'utilisez/ou un plugin l'utilise comme Je l'ai fait une fois (if ($pageposts) : global $post; foreach ($pageposts as $post) : setup_postdata($post); ... endforeach; endif;
), il le modifiera à nouveau à cause de sa description et de son objectif:
/**
* Set up global post data.
*
* @since 1.5.0
*
* @param object $post Post data.
* @uses do_action_ref_array() Calls 'the_post'
* @return bool True when finished.
*/
J'ai utilisé setup_postdata($post)
afin d'utiliser les fonctions conçues par $posts
dans un carrousel que je construisais pour sélectionner les publications qui appartenaient à custom post types
en fonction de post meta information
, de la date actuelle, etc.
Mon conseil, si vous êtes nouveau dans WordPress, restez fidèle à la functions
implémentée pour vous . L'abrégé a ses avantages. Cela rend les choses plus faciles à trouver, à mémoriser et à utiliser.