Aller au contenu

Les Custom Content Types dans WordPress : CPT et Taxonomies

Par défaut, WordPress gère des articles et des pages. Les Custom Post Types (CPT, types de contenu personnalisés) permettent d'en créer d'autres, chacun avec ses champs et ses classements : un portfolio, un annuaire, des événements, des offres d'emploi. C'est la fonctionnalité qui transforme WordPress en outil de gestion de données sur mesure. Cette page explique le principe, les trois façons de créer un CPT et les cas où il est vraiment utile.

Les types de contenu natifs de WordPress

Pour WordPress, presque tout est une « publication » (post) rangée dans la même table de la base de données, avec un type qui la distingue. Les principaux types natifs sont :

  • les articles (post) et les pages (page) ;

  • les fichiers joints (attachment), c'est-à-dire les éléments de la médiathèque ;

  • les révisions (revision), les versions successives d'un contenu ;

  • les éléments de menu (nav_menu_item) ;

  • les modèles et parties de modèles des thèmes à blocs (wp_template, wp_template_part).

Un Custom Post Type ajoute un nouveau type à cette liste, géré exactement comme les autres.

Qu'est-ce qu'un Custom Post Type ?

Un CPT est un type de contenu que vous définissez pour des contenus répétitifs qui ont leur propre structure. Exemples :

  • Événements : date, lieu, prix, lien d'inscription ;

  • Offres d'emploi : type de contrat, ville, salaire, date limite ;

  • Réalisations (portfolio) : client, année, galerie d'images ;

  • Témoignages, membres de l'équipe, recettes, biens immobiliers...

Le cas le plus connu est WooCommerce : chaque produit de la boutique est un CPT product.

Un CPT a son propre menu dans l'administration (par exemple « Événements »), ses propres adresses (/evenements/concert-de-printemps/) et, si vous l'activez, une page d'archive qui liste tous ses contenus. Les événements ne se mélangent plus avec les articles du blog.

Les taxonomies personnalisées

Une taxonomie est un système de classement. WordPress en fournit deux pour les articles : les catégories et les étiquettes (voir les taxonomies WordPress). Vous pouvez en créer d'autres et les attacher à vos CPT : « Type de contrat » et « Ville » pour des offres d'emploi, « Thème » pour des événements.

Comme les catégories, une taxonomie personnalisée peut être hiérarchique (avec des sous-termes) ou non, comme les étiquettes. Chaque terme dispose de sa page d'archive : la liste de toutes les offres en CDI, par exemple.

Les champs personnalisés

Un CPT prend toute sa valeur avec des champs dédiés : date et lieu pour un événement, prix pour un bien. WordPress a une fonction native de champs personnalisés, mais elle est peu pratique. Le plugin ACF (Advanced Custom Fields) la remplace avantageusement : il ajoute des champs typés (date, image, liste de choix, relation entre contenus...) dans l'écran d'édition. Voir notre avis sur ACF.

Trois façons de créer un Custom Post Type

Avec un plugin dédié

Custom Post Type UI (CPT UI) est un plugin gratuit qui crée des CPT et des taxonomies depuis une interface, sans code. Il est utilisé sur plus d'un million de sites. Il ne gère pas les champs : on l'associe en général à ACF.

Avec ACF

Depuis sa version 6.1, ACF sait aussi enregistrer des CPT et des taxonomies, y compris dans sa version gratuite (menu ACF > Post Types). Un seul plugin gère alors les types de contenu, les taxonomies et les champs.

En code

Pour un développeur, un CPT s'enregistre avec la fonction register_post_type(), appelée sur le crochet init :

PHP15 lignes
function ideo_register_evenement() {
    register_post_type( 'ideo_evenement', array(
        'labels'       => array(
            'name'          => 'Événements',
            'singular_name' => 'Événement',
        ),
        'public'       => true,
        'has_archive'  => true,
        'show_in_rest' => true, // nécessaire pour l'éditeur de blocs
        'menu_icon'    => 'dashicons-calendar-alt',
        'supports'     => array( 'title', 'editor', 'thumbnail', 'excerpt' ),
        'rewrite'      => array( 'slug' => 'evenements' ),
    ) );
}
add_action( 'init', 'ideo_register_evenement' );

Les recommandations de la documentation officielle :

  • placez ce code dans un plugin plutôt que dans le thème : vos contenus resteront accessibles si vous changez de thème ;

  • préfixez l'identifiant du type (ici ideo_) pour éviter les conflits avec d'autres plugins, sans utiliser wp_, réservé à WordPress ;

  • limitez l'identifiant à 20 caractères.

Les taxonomies personnalisées s'enregistrent de la même façon avec register_taxonomy(). Après l'ajout d'un CPT, si ses adresses renvoient une erreur 404, ouvrez Réglages > Permaliens et enregistrez sans rien changer : WordPress régénère ses règles de réécriture.

Afficher les CPT sur le site

Créer le type de contenu ne suffit pas, il faut décider de son affichage :

  • avec un thème à blocs, l'éditeur de site permet de créer un modèle pour les contenus du CPT et un modèle pour son archive, et le bloc Boucle de requête peut lister les contenus d'un CPT n'importe où ;

  • avec un thème classique, l'affichage passe par des fichiers de modèle du thème (ou d'un thème enfant) ;

  • avec un page builder comme Divi, les modèles du constructeur de thème peuvent cibler un type de contenu précis.

Quand en avez-vous vraiment besoin ?

Un CPT se justifie quand vous publiez régulièrement des contenus de même nature, avec des informations structurées que les articles ne savent pas gérer proprement, et qui doivent rester à part du blog. Si une simple catégorie d'articles suffit à séparer vos contenus, inutile d'aller plus loin.

Gardez aussi en tête qu'un CPT créé par un plugin dépend de ce plugin : s'il est désactivé, les contenus restent dans la base de données mais disparaissent de l'administration et du site, jusqu'à ce que le type soit de nouveau enregistré.

Les objets de publication et des exemples de CPT (événements, offres d'emploi) sont présentés en vidéo dans le module 8 de la formation WordPress.

Auteur : Jean-Noël Mathonnet

Commentaires

Pas encore de commentaire. Soyez le premier !

Laisser un commentaire

Lorsque vous achetez via des liens sur ce site, nous pouvons toucher une commission d'affiliation. + d'infos