[WordPress] Afficher un header ou un footer différent selon la page


Récemment on m’a posé une question à propos de la personnalisation de thèmes WordPress. La personne était persuadée qu’il fallait passer par un bon gros if, voire un template différent pour afficher un header ou un footer personnalisé selon la page ou l’on se trouve.

En fait non, les fonctions get_header() et get_footer() proposées par défaut par WordPress prennent un unique argument : le nom du template !

<?php get_header( $name ); ?>

 
Peu de développeurs de thèmes le prennent en compte et pourtant cela facilite énormément la tâche.

Par exemple sur les pages « single » (donc le template single.php), il suffit de déclarer

<?php get_header( 'single' ); ?>

au lieu de

<?php get_header(); ?>

Il vous faudra alors développer un template qui vous correspond et que vous nommerez header-single.php. Si ce template n’existe pas, alors header.php sera pris en compte.

C’est très pratique pour personnaliser des pages comme les 404, …
Tous les templates communs et les tags conditionnels (les fameux is_quelquechose()) sont concernés : category, tag, date, 404, … et même le nom de l’auteur (ex : author-lionel.php)

Pour mieux comprendre ce fonctionnement, n’hésitez pas à relire le diagramme de hiérarchie des templates de WordPress

Voila de quoi personnaliser facilement un thème WordPress, sans grands développements.