Comme cité sur le guide de création de thèmes WordPress, il vous faudra créer plusieurs fichiers php pour pouvoir avoir un thème complet et prêt à être utilisé. Parmis ces fichiers, nous avons cité :
- header.php – contient le code de la section d’en-tête du thème.
- index.php – contient le code de la zone principale et spécifiera où les autres fichiers seront inclus. Il s’agit du fichier principal du thème.
- sidebar.php – contient les informations sur la barre latérale.
- footer.php – gère la section de pied de page.
- style.css – responsable du style de votre thème.
- bootstrap.css – aucun code CSS séparé n’est requis; très réactif.
- bootstrap.js – fournit ses propres js pour la barre de navigation, les onglets, etc.
Mais il n’y a pas que ces fichiers qui peuvent être inclus ou utilisés dans vos thèmes. WordPress a derrière lui un système de Templates puissant et complexe qui tourne autour des fichiers templates ou Template Files.
Template Files
Les fichiers templates sont utilisés dans tous les thèmes WordPress, mais commençons par découvrir la terminologie.
Le terme «template» est utilisé de différentes manières lorsque vous travaillez avec des thèmes WordPress:
- Les fichiers de templates existent dans un thème et expriment la façon dont votre site est affiché.
- Les templates de pages sont ceux qui s’appliquent uniquement aux pages pour changer leur apparence. Un template de page peut être appliqué à une seule page, une section de page ou une classe de pages.
- Les Template Tags sont des fonctions WordPress intégrées que vous pouvez utiliser dans un fichier de template pour récupérer et afficher des données (telles que the_title() et the_content()).
- La hiérarchie des templates est la logique utilisée par WordPress pour décider du ou des fichiers de modèle de thème à utiliser, en fonction du contenu demandé.
Les thèmes WordPress sont constitués de fichiers de templates. Ce sont des fichiers PHP qui contiennent un mélange de HTML, de balises de modèle et de code PHP.
Lorsque vous créez votre thème, vous utiliserez des fichiers de templates pour affecter la mise en page et la conception de différentes parties de votre site Web. Par exemple, vous utiliseriez le modèle header.php pour créer un en-tête ou le modèle comments.php pour inclure des commentaires.
Quand quelqu’un visite une page de votre site Web, WordPress charge un template basé sur la demande. Le type de contenu affiché dans le fichier template est déterminé par le type de publication associé au template. La hiérarchie des templates décrit le fichier de template que WordPress chargera en fonction du type de demande et si le template existe dans le thème. Le serveur analyse ensuite le PHP dans le modèle et renvoie l’HTML au visiteur.
Le fichier de template le plus critique est index.php, qui est le modèle fourre-tout si un modèle plus spécifique ne peut pas être trouvé dans la hiérarchie des template. Bien qu’un thème ne nécessite qu’un template index.php, les thèmes incluent généralement de nombreux template pour afficher différents types de contenu et contextes.
Exemple de la hiérarchie
Si votre blog se trouve sur http://example.com/blog/ et qu’un visiteur clique sur un lien vers une page de catégorie telle que http://example.com/blog/category/your-cat/, WordPress recherche un modèle ou template de fichier dans le répertoire du thème actuel qui correspond à l’ID de la catégorie pour générer la page correcte. Plus précisément, WordPress suit cette procédure:
- Recherche un fichier de template dans le répertoire du thème actuel qui correspond au slug de la catégorie. Si le slug de catégorie est «unicorns», WordPress recherche un fichier modèle nommé category-unicorns.php.
- Si category-unicorns.php est manquant et que l’ID de la catégorie est 4, WordPress recherche un fichier modèle nommé category-4.php.
- Si category-4.php est manquant, WordPress recherchera un fichier de template de catégorie générique, category.php.
- Si category.php n’existe pas, WordPress recherchera un modèle d’archive générique, archive.php.
- Si archive.php est également manquant, WordPress reviendra au fichier de modèle de thème principal, index.php.
La Hiérarchie WordPress
Le diagramme suivant montre quels fichiers de template sont appelés pour générer une page WordPress basée sur la hiérarchie de modèles WordPress.
La hiérarchie des Templates en détail
Bien que la hiérarchie des templates soit plus facile à comprendre en tant que diagramme, les sections suivantes décrivent l’ordre dans lequel les fichiers templates sont appelés par WordPress pour un certain nombre de types de requêtes.
Affichage de la page d’accueil
Par défaut, WordPress configure la page d’accueil de votre site pour afficher vos derniers articles de blog. Cette page s’appelle l’index des articles de blog. Vous pouvez également configurer vos articles de blog pour qu’ils s’affichent sur une page statique distincte. Le fichier modèle home.php est utilisé pour afficher l’index des articles de blog, qu’il soit utilisé comme page d’accueil ou sur une page statique distincte. Si home.php n’existe pas, WordPress utilisera index.php.
- home.php
- index.php
Remarque: si front-page.php existe, il remplacera le modèle home.php.
Affichage de la Front Page
Le fichier modèle front-page.php est utilisé pour afficher la page d’accueil de votre site, que la page d’accueil affiche l’index des articles de blog (mentionné ci-dessus) ou une page statique. Le modèle de Front Page a la priorité sur le modèle d’index des articles de blog (home.php). Si le fichier front-page.php n’existe pas, WordPress utilisera les fichiers home.php ou page.php en fonction de la configuration dans Réglages > Lecture. Si aucun de ces fichiers n’existe, il utilisera le fichier index.php.
La page Politique de confidentialité
Le fichier modèle privacy-policy.php est utilisé pour afficher la page Politique de confidentialité de votre site. Le modèle de page Politique de confidentialité est prioritaire sur le modèle de page statique (page.php). Si le fichier privacy-policy.php n’existe pas, WordPress utilisera les fichiers page.php ou singular.php en fonction des modèles disponibles. Si aucun de ces fichiers n’existe, il utilisera le fichier index.php.
Single Post – Modèle d’article
Le fichier de modèle d’article unique est utilisé pour rendre un article unique. WordPress utilise le chemin suivant :
- single-{post-type}-{slug}.php – (Depuis 4.4) Tout d’abord, WordPress recherche un modèle pour l’article spécifique. Par exemple, si le type de publication est product et que le slug de publication est ABC, WordPress rechercherait single-product-ABC.php.
- single-{post-type}.php – Si le type de publication est product, WordPress recherchera single-product.php.
- single.php – WordPress revient alors à single.php.
- singular.php – Ensuite, il revient à singular.php.
- index.php – Enfin, comme mentionné ci-dessus, WordPress revient finalement à index.php.
Single Page
Le fichier utilisé pour afficher une page statique (post-type page). Notez que contrairement aux autres types de publication, la page est spéciale pour WordPress et utilise le chemin suivant:
- Le fichier de modèle personnalisé – Le modèle de page affecté à la page.
- page-{slug}.php – Si le slug de page est recent-news, WordPress cherchera à utiliser page-recent-news.php.
- page-{id}.php – Si l’ID de page est 6, WordPress cherchera à utiliser page-6.php.
- page.php
- singular.php
- index.php
Categorie
L’affichage des pages d’index des archives de catégories suit le chemin suivant dans WordPress :
- category-{slug}.php – Si le slug de la catégorie est news, WordPress recherchera category-news.php.
- category-{id}.php – Si l’ID de la catégorie est 6, WordPress recherchera category-6.php.
- category.php
- archive.php
- index.php
Tag
Pour afficher une page d’index d’archive de balises, WordPress utilise le chemin suivant :
- tag-{slug}.php – Si le slug de la balise est ABCD, WordPress recherchera tag-ABCD.php.
- tag-{id}.php – Si l’ID de la balise est 6, WordPress recherchera tag-6.php.
- tag.php
- archive.php
- index.php
Custom Taxonomies
Les taxonomies personnalisées utilisent un chemin de fichier de modèle légèrement différent:
- taxonomie-{taxonomie}-{term}.php – Si la taxonomie est ABC, et que le terme de la taxonomie est DEF, WordPress recherchera taxonomie-ABC-DEF.php. Dans le cas des formats Post, la taxonomie est «post_format» et les termes sont «post-format-{format}». c’est-à-dire taxonomy-post_format-post-format-link.php pour le format de publication ‘link’.
- taxonomy-{taxonomy}.php – Si la taxonomie était ABCD, WordPress chercherait taxonomy-ABCD.php.
- taxonomy.php
- archive.php
- index.php
Custom Post Types – Types de publication personnalisés
Les types de publication personnalisés utilisent le chemin suivant pour afficher la page d’index d’archive appropriée :
- archive-{post_type}.php – Si le type de publication est product, WordPress recherchera archive-product.php.
- archive.php
- index.php
L’auteur
Sur la base des exemples ci-dessus, le rendu des pages d’index des archives de l’auteur est assez explicatif:
- author-{NomAuteur}.php – Si le nom de l’auteur est anas, WordPress recherchera author-anas.php.
- author-{id}.php – Si l’ID de l’auteur était 6, WordPress recherchera author-6.php.
- author.php
- archive.php
- index.php
Date
Les pages d’index d’archive basées sur la date sont rendues comme prévu:
- date.php
- archive.php
- index.php
Résultat de la recherche
Les résultats de la recherche suivent le même modèle que les autres types de modèles:
- search.php
- index.php
404 (page introuvable)
De même, le modèle 404 est appelé dans cet ordre:
- 404.php
- index.php
Hiérarchie des filtres
Le système de modèles WordPress vous permet de filtrer la hiérarchie. Cela signifie que vous pouvez insérer et modifier des éléments à des points spécifiques de la hiérarchie. Le filtre (situé dans la fonction get_query_template()) utilise ce nom de filtre: “{$type}_template” où $type est le type de template.
Voici une liste de tous les filtres disponibles dans la hiérarchie des modèles:
- embed_template
- 404_template
- search_template
- frontpage_template
- home_template
- privacypolicy_template
- taxonomy_template
- Attachement_template
- single_template
- page_template
- singular_template
- category_template
- tag_template
- author_template
- date_template
- archive_template
- index_template