Les modèles, ou en anglais templates, sont certains des fichiers .php
se trouvant à la racine d'un thème.
Ces fichiers permettent de contrôler la structure d'une ou plusieurs pages sur un site. Par exemple, Amazon à un modèle pour sa page d'accueil, mais aussi un template de page de produit. Celui de la page d'accueil n'est utilisé que pour une seule page (la page d'accueil), mais celui de la page de produit est utilisé pour afficher tous les produits du site.
Création
Nom
Pour créer un modèle, il suffit de créer un fichier .php
à la racine du thème. Dans ce fichier, immédiatement après la déclaration <?php
, le commentaire Template Name
permet d'indiquer à WordPress le nom du modèle en question.
Par exemple, il est possible de spécifier que le modèle product.php devrait être disponible dans le tableau de bord sous le nom Produit:
/**
* Template Name: Produit
*/
WordPress est ainsi en mesure de détecter ce fichier comme étant un modèle.
Par la suite, lors de la création ou de l'édition d'une page, un menu déroulant dans la barre latérale de droite permet de choisir le modèle à attribuer à cette page.
Attributs de page ➡️ Modèle
Le nom donné au modèle dans le commentaire apparaîtra comme option dans ce menu déroulant.
Il est donc possible de choisir quel modèle devrait utiliser cette page.
Type de posts supportés
Les modèles ne sont disponibles que pour les posts par défaut (pages et articles). Pour qu'un modèle puisse supporter un autre type de post, il faut lui indiquer à l'aide du commentaire Template Post Type
.
Par exemple, après avoir créé le type de post product dans le tableau de bord, le menu déroulant de choix de modèle sera absent de tous les posts de ce type, puisque par défaut aucun modèle ne supporte ce type de post.
Afin d'indiquer que le modèle Produit doit pouvoir être utilisé par les posts de type product, il faut le spécifier à l'intérieur du modèle ainsi:
/**
* Template Name: Produit
* Template Post Type: post, page, product
*/
Ce modèle est donc disponible dans les articles (posts), les pages et les post dont le slug est product.
Hiérarchie
WordPress tente de déterminer quel modèle afficher lors de l'appel d'une page en suivant une hiérarchie particulière 👑.
Pages 📄
Par exemple, avec l'url exemple.com/portfolio
WordPress tentera de valider en ordre si:
Un modèle a été attribué via le tableau de bord.
page-portfolio.php
existe à la racine du thème.page-7.php
existe. (Si l'id de la page est7
).Le fichier générique
page.php
est présent.singular.php
existe.index.php
existe.
Accueil
La page d'accueil est particulière. Par défaut, WordPress lui attribue son propre modèle affichant normalement les plus récents articles. Il est néanmoins possible de changer cette configuration dans le tableau de bord via:
Réglage ➡️ Lecture
home.php
index.php
404
404.php
index.php
Articles (Posts)
Les articles suivent une hiérarchie légèrement différente.
Par exemple, avec l'url exemple.com/bonjour-tout-le-monde
WordPress tente de valider en ordre si:
single-post-bonjour-tout-le-monde.php
existe.
Ce nom de fichier provient:du préfixe
single
.du type de post, dans cet exemple celui par défaut
post
.et du slug de l'article
bonjour-tout-le-monde
single-post.php
existe. Ce nom, comme le précédent, provient du préfixsingle
et du type de post. Par exemple: si ce type avait étéproduct
, le fichier appelé aurait étésingle-product.php
.single.php
si aucun modèle spécifique n'est trouvé.ensuite
singular.php
et finalement
index.php