web-dev-qa-db-fra.com

Où utiliser la variable globale $ post?

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?

2
Alamin

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.

3
Pieter Goosen

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.

1
aifrim