23 Jan 2011
Posté dans : Tips and tricks

Explications sur la hiérarchie des templates WordPress

Avez-vous déjà remarqué que les noms des fichiers qui composent un thème WordPress sont souvent les mêmes ? (index.php, single.php, page.php…) Ceci n’est pas dû au hasard et la nomenclature des fichiers a toute son importance. Le schéma ci-dessous résume comment le WordPress détermine le template à afficher.

Lorsque vous affichez un contenu généré par WordPress, ce dernier commence par déterminer le « format » de la page. Est-ce un article (is_single) ? Est-ce une page (is_page) ? Est-ce la page d’accueil (is_home) ?

Prenons par exemple l’affichage d’une catégorie. WordPress nous dirige vers la branche is_category (à gauche). Si dans le dossier de vos thème vous avez un fichier nommé « category-slug.php » où slug est le slug de la catégorie affichée, alors ce template sera chargé. Sinon, WordPress va chercher un template nommé « category-id.php » où id est l’id de la catégorie. Si ce n’est toujours pas le cas, il cherchera un fichier nommé « category.php » qui bien souvent existe. Si ce n’est pas le cas, nous aurons « archive.php » et enfin « index.php » qui est un fichier obligatoire pour que le thème soit valide.

Cela signifie donc que si pour une catégorie particulière vous souhaitez afficher un template particulier, vous n’aurez qu’à dupliquer « category.php » et le renommer avec le slug ou l’id de votre catégorie.

Ceci est bien entendu valable pour tout le schéma ci-dessus. Vous pourrez donc facilement créer une page d’erreur 404, une page d’accueil personnalisée ou une vue spéciale pour vos taxonomies et types de contenus.

Arrêtons-nous désormais sur quelques particularités :

Quelle est la différence entre « is_home » et « is_front_page » ? Et bien si vous vous rendez dans Réglages > Lecture, vous verrez que vous pouvez définir ce qu’il se passe en page d’accueil. Préférez-vous afficher les derniers articles ou une page en particulier ? Si vous avez choisi une page en particulier, alors vous pourrez personnaliser son template en créant un fichier « home.php ». Si vous avez choisi de lister les derniers articles, « home.php » ne fonctionnera pas, il faudra utiliser « front_page.php » qui englobe « page particulière » ET « derniers articles ».

Les fichiers loop.php
Le fichier loop.php sert à afficher une liste de contenus dans un template. Or, vous aurez peut-être besoin d’un fichier loop pour vos articles, d’un second pour vos tags et d’un troisième pour un autre type de contenu. Il vous suffira alors de dupliquer votre fichier loop.php et de renommer les copies en loop-slug-de-votre-choix.php puis de les appeler dans vos templates avec la fonction WordPress get_template_part comme suit :

Notez que vous pouvez faire de même avec tous les fichiers et que le second paramètre est facultatif. Il est donc enfantin d’appeler un template dans un template avec cette fonction.

Vous avez normalement toutes les clés pour comprendre comment personnaliser la vue des tags, d’un auteur particulier ou de la page de recherche…

4 Commentaires

  • Bonjour,

    Je voulais juste vous signaler une erreur : vous parlez de la page  » is_front_page.php » mais il s’agit en fait de la page « front_page.php ».

    C’est la fonction qui se nome: is_front_page()

    Merci pour cet aricle 🙂

    • Bien vu c’est corrigé merci.

  • Merci beaucoup pour les explications !!

  • Valuable information. Privileged my family I ran across your website accidentally, that i’m surprised the reason why the following coincidence couldn’t occurred earlier! My partner and i book-marked the idea.

Laisser un commentaire

Rechercher