vendredi 25 septembre 2026

À propos

Contact

Thèmes

Template Post Type : des modèles de page ciblés par type de contenu

L'en-tête Template Post Type, disponible depuis WordPress 4.7, et sa différence concrète avec single-{post_type}.php sur des cas réels de CPT.

Par Clément Hadrot • 28 juillet 2021 • 4 min de lecture • Aucun commentaire
Template Post Type : des modèles de page ciblés par type de contenu

Sur le site d’un cabinet d’avocats, deux types de contenu personnalisés — « Domaines d’expertise » et « Membres de l’équipe » — devaient partager exactement la même mise en page à droite d’une biographie, mais avec un contenu de colonne latérale différent selon le cas. La première tentation a été de créer deux fichiers, single-expertise.php et single-membre.php, quasiment identiques. Une meilleure solution existait depuis WordPress 4.7 : l’en-tête Template Post Type, qui permet d’assigner manuellement un même modèle à plusieurs types de contenu.

Cette notion reste peu connue car elle vit à la croisée de deux systèmes : les modèles de page classiques, historiquement réservés aux pages, et la hiérarchie de templates automatique basée sur le nom du type de contenu.

Ce que change réellement Template Post Type

Avant WordPress 4.7, l’en-tête Template Name: ne fonctionnait que sur des fichiers destinés aux pages, sélectionnables dans le menu déroulant « Modèle » de l’écran d’édition d’une page. Il était impossible d’assigner un modèle personnalisé à un article ou à un type de contenu personnalisé de la même façon. L’ajout de la ligne Template Post Type: dans l’en-tête d’un fichier change cela : elle indique explicitement à quels types de contenu ce modèle doit être proposé.

<?php
/**
 * Template Name: Fiche détaillée
 * Template Post Type: post, expertise, membre
 */
get_header();
?>

Avec cet en-tête, le modèle « Fiche détaillée » apparaît dans le sélecteur de modèle de l’éditeur pour les articles, les fiches d’expertise et les fiches de membre à la fois — un seul fichier, assignable manuellement selon les besoins, plutôt que trois fichiers séparés reliés uniquement par convention de nommage.

La différence avec single-{post_type}.php

L'essentiel à retenir : Un même fichier peut servir à plusieurs types de contenu ; Le choix se fait manuellement, pas par convention de nommage ; Prioritaire sur single-{post_type}.php dans la hiérarchie

single-expertise.php s’applique automatiquement à tous les contenus du type expertise, sans aucune action de l’utilisateur : c’est la hiérarchie de templates classique de WordPress qui choisit ce fichier dès qu’il existe. Template Post Type fonctionne à l’inverse : le fichier existe, mais rien ne s’affiche automatiquement tant qu’un utilisateur ne l’a pas explicitement sélectionné dans l’éditeur pour tel ou tel contenu précis.

Caractéristiquesingle-{post_type}.phpTemplate Post Type
ApplicationAutomatique pour tout le typeManuelle, contenu par contenu
Réutilisable sur plusieurs typesNon, un fichier par typeOui, une liste de types dans l’en-tête
Priorité dans la hiérarchieStandardPrioritaire s’il est sélectionné

Quand un modèle personnalisé est assigné à un contenu via l’écran d’édition, WordPress le fait passer avant single-{post_type}.php dans son ordre de résolution des templates. Ce comportement suit la même logique que pour les pages classiques, où un modèle personnalisé assigné prime toujours sur page.php.

Un cas d’usage concret sur les CPT du cabinet

Sur le projet du cabinet d’avocats, un seul fichier template-fiche-detaillee.php gère désormais l’affichage des expertises et des membres de l’équipe, avec une portion de code conditionnelle pour les quelques éléments réellement différents :

<?php if ( 'membre' === get_post_type() ) : ?>
	<p class="fiche-fonction"><?php echo esc_html( get_post_meta( get_the_ID(), 'fonction', true ) ); ?></p>
<?php else : ?>
	<p class="fiche-domaine"><?php echo esc_html( get_post_meta( get_the_ID(), 'domaine_juridique', true ) ); ?></p>
<?php endif; ?>

Toute la structure commune — colonne latérale, fil d’ariane, bloc de contact — reste écrite une seule fois, ce qui réduit fortement la duplication par rapport aux deux fichiers single-*.php initialement envisagés.

Une limite à connaître

Le principal inconvénient de cette approche tient à son caractère manuel : si un rédacteur crée une nouvelle fiche d’expertise sans lui assigner explicitement le modèle « Fiche détaillée », WordPress retombe sur single-expertise.php s’il existe, ou sur single.php à défaut, sans aucun avertissement. Sur des types de contenu à fort volume, où l’assignation manuelle systématique n’est pas réaliste, single-{post_type}.php reste préférable précisément parce qu’il s’applique sans intervention humaine.

Template Post Type convient aux cas où un même modèle doit couvrir plusieurs types de contenu à faible volume, jamais à un type de contenu produit en masse où l’automatisme de single-{post_type}.php reste indispensable.

Ce qu’il faut retenir

Disponible depuis WordPress 4.7, l’en-tête Template Post Type reste un outil de niche, mais précieux dès qu’un modèle doit être partagé volontairement entre plusieurs types de contenu à la carte, plutôt qu’appliqué automatiquement à tout un type. La hiérarchie complète des templates, avec l’ensemble de ses règles de résolution, mérite un article dédié à part entière.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi