La hiérarchie des fichiers modèles
(template hierarchy) est la logique utilisée par WordPress pour décider quel fichier modèle est utilisé.
Il y a deux types de fichiers modèles (PHP sans fonctions) :
Fichiers modèles inclus dans d'autres fichiers modèles, comme header.php
, footer.php
, content-page.php
, etc.
Ils n'ont pas de fonction get_header()
.
Ils sont inclus avec des marqueurs de modèle (template tags, fonctions PHP de WordPress) : get_header
, get_footer()
, comments_template()
...
Les autres fichiers modèles sont ceux qu'on trouve dans le diagramme de la hiérarchie de fichiers modèles.
home.php
Le fichier home.php
génère la liste de derniers articles publiés.
Si elle n'existe pas, alors on charge index.php
front-page.php
Le fichier front-page.php
génère la page d'accueil.
S'il n'existe pas, alors on charge home.php
ou page.php
, selon ce qu'on a choisi dans le menu Réglages/Lecture dans le back office .
Le fichier single.php
génère la page d'un article.
S'il n'existe pas, alors on charge singular.php
, et s'il n'existe pas, c'est index.php
.
Ignorez les fichiers single-{post-type}.php
S'il n'y a pas de fichier home.php
ni front-page.php
ni index.php
, quel fichier génère la page d'accueil ?
Le fichier page-{slug}.php
ou page-{id}.php
génère le code source de la page avec ces slugs/ids.
S'ils n'existent pas, alors on charge page.php
.
Sinon, c'est singular.php
, et puis index.php
.
La priorité est :
category-{slug}.php
category-{id}.php
category.php
archive.php
index.php
C'est pareil pour les étiquettes (tag*.php
)
La priorité est :
author-{nicename}.php
author-{id}.php
author.php
archive.php
index.php
Il y a une autre façon de personnaliser les pages :
<?php if (is_author('martin')) : ?>
<!-- afficher quelque chose pour la liste d’articles signés par martin -->
<?php else : ?>
<!-- afficher autre chose pour le reste des utilisateurs -->
<?php endif; ?>
Ainsi, on n'a pas besoin de créer le fichier author-martin.php
ni author-3.php
.
Un marqueur conditionnel (conditional tag) est une fonction de WordPress qui renvoie un booléen (true ou false).
On peut les utiliser pour savoir dans quel type de page web on est.
is_home()
is_front_page()
À quoi sert cette condition ?
is_single()
is_single('19')
is_single('Septième article')
is_single('septieme-article')
is_single(array(17, 'Huitième article', 'neuvieme-article'))
is_page()
is_single()
.is_search()
is_404()
is_singular()
is_author()
is_single()
.is_category()
is_single()
.in_category('4')
is_single()
.is_tag()
is_category()
has_tag('oscar')
Pour déboguer sur WordPress, on active les réglages suivants dans le fichier wp-config.php
:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', true);
On utilise une boucle pour charger une liste d'articles ou commentaires :
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
... Display post content
<?php endwhile; ?>
<?php endif; ?>
Dedans on utilise les fonctions the_content()
, the_excerpt()
, next_post()
, etc.
On peut créer des fichiers modèles partiels personnalisés. Par exemple, on crée le fichier header-martin.php
et on l'importe avec la fonction get_header('martin')
.
En géneral, on peut importer n'importe quel fichier X-Y.php
avec get_template_part('X', 'Y')
.