Recherches populaires

Base de connaissances — Définition

Type de publication personnalisé (Custom Post Type)

Ce qu’est un type de publication personnalisé WordPress, le fonctionnement de register_post_type(), quand le préférer aux pages et les erreurs à éviter.

Qu’est-ce qu’un type de publication personnalisé?

Un type de publication personnalisé (custom post type) est un type de contenu que vous enregistrez dans WordPress en plus des articles et des pages intégrés, par exemple Projets, Membres de l’équipe, Événements, Emplacements ou Offres d’emploi, chacun avec son propre menu d’administration, son écran d’édition, sa structure d’URL et ses gabarits.

À l’interne, tout le contenu de WordPress est stocké dans la même table de base de données, wp_posts, où une colonne post_type distingue les types. Les articles, les pages, les fichiers joints, les révisions et les éléments de menu de navigation sont déjà des types de publication. En enregistrer un nouveau ne fait qu’en ajouter un autre, ce qui signifie qu’il fonctionne automatiquement avec les fonctionnalités de WordPress comme les révisions, les permissions des utilisateurs, la recherche, l’API REST et l’éditeur de blocs. Combinés à des champs personnalisés et à des taxonomies personnalisées, les types de publication personnalisés transforment WordPress d’outil de blogue en véritable système de gestion de contenu polyvalent.

Pourquoi les types de publication personnalisés sont importants

Choisir le bon modèle de contenu dès le départ évite bien du travail à refaire plus tard.

  • Édition plus claire : les rédacteurs ajoutent un événement à partir d’un menu Événements comportant des champs pour la date et le lieu, au lieu de mettre en forme une page générique à la main.
  • Affichage uniforme : chaque élément d’un même type utilise le même gabarit, de sorte que les listes et les pages de détail ont une apparence cohérente.
  • Meilleures URL et archives : chaque type peut avoir son propre slug, comme /projects/, et une page d’archives générée automatiquement.
  • Données structurées : des champs distincts facilitent le filtrage, le tri, l’ajout de balisage Schema ou la diffusion du contenu vers une application au moyen de l’API REST.
  • Permissions plus sûres : vous pouvez autoriser un rôle à gérer un type de contenu sans lui donner accès au reste du site.

Comment fonctionnent les types de publication personnalisés

  1. Enregistrement : le code appelle register_post_type() sur le crochet init avec une clé de 20 caractères ou moins, en minuscules et sans espaces, accompagnée d’étiquettes et d’arguments.
  2. Arguments clés : public contrôle la visibilité, has_archive crée une page de liste, rewrite définit le slug de l’URL, supports active des fonctionnalités comme le titre, l’éditeur, l’image mise en avant et l’extrait, et menu_icon définit l’icône dans l’administration.
  3. Éditeur de blocs et API REST : il faut régler show_in_rest à true pour que le type puisse utiliser l’éditeur de blocs et être accessible par l’API REST.
  4. Taxonomies et champs : register_taxonomy() ajoute des catégories propres au type, comme Type d’événement, tandis que les champs personnalisés stockent des valeurs structurées comme des dates ou des prix, souvent gérées à l’aide d’une extension de champs ou de register_post_meta().
  5. Gabarits : les thèmes classiques utilisent des fichiers comme single-event.php et archive-event.php; les thèmes de blocs utilisent des gabarits HTML correspondants, modifiables dans l’éditeur de site.

Erreurs courantes avec les types de publication personnalisés

  • Les enregistrer dans le thème : si le code se trouve dans le thème, changer de thème fait disparaître tout ce contenu de l’administration. Il existe toujours dans la base de données, mais personne ne peut plus y accéder.
  • Utiliser des noms réservés : des clés comme post, page, attachment, revision, action, order ou theme entrent en conflit avec le cœur de WordPress ou avec des extensions répandues.
  • Oublier de régénérer les permaliens : les nouveaux types renvoient des erreurs 404 tant que les règles de réécriture ne sont pas actualisées, ce que vous pouvez faire en enregistrant Réglages, Permaliens.
  • Un type de publication pour tout : créer un type là où une catégorie ou une étiquette suffirait. Si les éléments partagent les mêmes champs et n’ont besoin que d’être regroupés, utilisez une taxonomie.
  • Changer la clé après coup : renommer la clé d’un type de publication rend le contenu existant orphelin et brise les URL, à moins de migrer les données et d’ajouter des redirections.

Bonnes pratiques pour les types de publication personnalisés

  • Modéliser le contenu avant de développer : dressez la liste de chaque type de contenu, de ses champs, de ses liens avec les autres et des endroits où il apparaît sur le site.
  • Enregistrer les types dans une extension : utilisez une extension propre au site pour que la structure du contenu soit indépendante du design.
  • Préfixer vos clés : un court préfixe évite les collisions avec des extensions susceptibles d’enregistrer un type portant le même nom.
  • Régénérer les règles de réécriture seulement à l’activation : appelez flush_rewrite_rules() à l’activation de l’extension, jamais à chaque chargement de page.
  • Verrouiller l’édition quand c’est utile : utilisez des modèles de blocs pour donner à chaque type une mise en page prédéfinie, afin que les rédacteurs remplissent du contenu plutôt que de concevoir des pages.
  • Prévoir la recherche et le référencement : décidez quels types doivent être indexés, incluez-les dans votre plan de site XML et donnez aux archives des introductions utiles.

Les types de publication personnalisés chez PerfectPixels

La modélisation du contenu est l’une des premières étapes de tout projet de développement WordPress. Nous enregistrons les types de publication, les taxonomies et les champs dans une extension dédiée, concevons les écrans d’édition en fonction de la façon dont votre équipe travaille réellement et créons des gabarits pour chaque type. Notre étude de cas sur une plateforme WordPress sur mesure illustre cette approche en pratique.

Questions fréquentes

Quand utiliser un type de publication personnalisé plutôt qu’une page?

Utilisez un type de publication personnalisé lorsque vous avez de nombreux éléments du même genre qui partagent des champs et doivent être listés, filtrés ou affichés de la même façon, comme des membres de l’équipe ou des propriétés. Réservez les pages au contenu unique, comme À propos ou Contact.

Faut-il une extension pour créer un type de publication personnalisé?

Non. Quelques lignes de PHP avec register_post_type() suffisent. Il existe des extensions dotées d’une interface de réglages, mais définir les types dans le code les garde sous contrôle de version et évite une dépendance de plus.

Mon contenu sera-t-il perdu si je désactive le code qui enregistre un type de publication?

Non. Le contenu reste dans la base de données, mais il est masqué dans l’administration et sur le site tant que le type n’est pas enregistré de nouveau. C’est pourquoi l’enregistrement doit se faire dans une extension plutôt que dans un thème.

Ressources connexes

Pour aller plus loin : Types de publication personnalisés — WordPress Developer Resources.

Tous les termes

Besoin d’aide pour passer à la pratique?

Parlez au studio.

↯ Contact rapide

Une petite question?

Demandez-nous n’importe quoi : nous répondons en deux jours ouvrables.