web-dev-qa-db-fra.com

le titre(); fonctionne dans un modèle de page, en dehors de la boucle. Pourquoi?

J'essaie de comprendre le concept de la boucle ...

Étant donné une page de modèle (page-work.php) avec seulement ce code:

<?php the_title(); ?>

WP affiche correctement le titre de cette page. Si j'ai bien compris, cela sort de toute boucle et ne devrait pas fonctionner (le Codex recommande d'utiliser get_the_title dans ces cas).

La question est donc: pourquoi ça marche?

Curieusement, cela ne produira pas le titre + le contenu, juste le titre:

<?php the_title(); the_content(); ?>

Merci!

3
MrMerrick

L'objet global $post existe déjà pour les vues singulières avant l'appel de wp_head. Ce n'est tout simplement pas rempli avec toutes les données.

the_title() appelle get_the_title() qui à son tour appelle get_post(). Et that appelle $GLOBALS['post'] si aucun identifiant n'a été transmis.

Voir aussi Génération des balises ogp dans theme pour un cas d'utilisation.

2
fuxia