Un catalogue de produits, une base de recettes ou un annuaire de membres ne correspondent ni à des articles chronologiques ni à des pages statiques ; WordPress permet de créer un type de contenu sur mesure plutôt que de forcer ces données dans un moule inadapté.
Fonctionnement dans WordPress
La déclaration se fait avec register_post_type(), en précisant notamment si le type est public, quelles fonctionnalités il prend en charge via l’argument supports (titre, éditeur, image mise en avant…), et selon quelle structure il apparaît dans les permaliens grâce à l’argument rewrite. Comme les articles, il peut être associé à des taxonomies, natives ou personnalisées, et recevoir des champs personnalisés.
Exemple
register_post_type( 'produit', array(
'label' => 'Produits',
'public' => true,
'supports' => array( 'title', 'editor', 'thumbnail' ),
'rewrite' => array( 'slug' => 'catalogue' ),
) );
Bon à savoir
Un type de contenu personnalisé enregistré uniquement dans les fichiers d’une extension doit obligatoirement déclencher un rafraîchissement des règles de réécriture — au minimum une fois, à l’activation — pour que ses permaliens fonctionnent au lieu de renvoyer une page 404.
L’argument show_in_rest conditionne aussi la disponibilité du type dans l’éditeur de blocs et dans l’API REST ; l’omettre laisse le type invisible dans l’interface moderne, même si son contenu reste parfaitement gérable depuis l’éditeur classique ou par du code personnalisé.
Contrairement à une idée répandue, un type de contenu personnalisé n’a pas besoin d’être public pour être utile : un type interne, marqué public à false, permet de stocker des données structurées destinées uniquement à un usage administratif, sans jamais générer de page publique correspondante.