Les Types de Publications Personnalisés WordPress, ou Custom Post Types, ou encore Types de Posts Personnalisés, sont des fonctionnalités puissantes. C’est ce qui fait passer WordPress d’un simple outil de blog à un système de gestion de contenu, et qui vous donne la flexibilité nécessaire pour créer un site sur mesure.

Mais ils peuvent être source de confusion : quels sont exactement les types de publications personnalisés WordPress ? En quoi diffèrent-ils des articles et des pages standard ? Comment les créer ? Et une fois que vous avez créé un type de publication personnalisé, comment l’ajouter, l’afficher sur votre site, et comment est-il stocké par WordPress ?

Dans cet article, je vais vous montrer exactement comment fonctionnent les types de publications personnalisés WordPress. Je vais les comparer aux types de publications que vous connaissez peut-être mieux, vous apprendre comment les créer et vous montrer comment utiliser les fichiers de modèles de thèmes pour les afficher dans votre site.

Alors, allons-y !

Quels sont les types de publications personnalisés dans WordPress ?

Il est probablement plus facile d’expliquer ce que sont les types de publications personnalisés dans WordPress en expliquant un concept plus large : les types de publications.

Les types de publications sont des moyens de catégoriser différents types de contenu dans WordPress. Je suppose que vous connaissez déjà les deux types de publications les plus courants : les articles et les pages. Mais ce que vous ne savez peut-être pas, c’est que WordPress est également livré avec quelques autres types de messages.

Types de publications qui sont fournis avec WordPress

WordPress est fourni avec sept types de publications :

  • Articles
  • Pages
  • Fichiers jointes
  • Révisions
  • Menus de navigation
  • CSS personnalisé
  • Ensemble de changements (Changesets)

Il y a de fortes chances que vous n’ayez jamais entendu parler des ensemble de changements et que vous puissiez utiliser des CSS personnalisés dans votre site, mais il ne vous est pas venu à l’esprit qu’il pourrait s’agir de types de publications.

Pour la plupart des utilisateurs et développeurs de WordPress, les seuls types de publication dont vous devez vous préoccuper sont les cinq premiers : Articles, pages, fichiers joints, révisions et menus de navigation.

Jetons un coup d’œil à chacun de ces types de publications pour que nous puissions mieux les comprendre.

Types de publications WordPress : Articles

Les « articles » sont le type de publication que vous utiliserez le plus dans WordPress. Les articles sont des contenus dynamiques : conçus pour être mis à jour régulièrement. Vous pouvez y ajouter des catégories et des étiquettes, ce qui signifie qu’ils seront affichées dans plusieurs pages d’archives, et qu’ils apparaîtront également sur votre page d’accueil ou votre page de blog. Habituellement, vos articles constitueront l’essentiel du contenu de votre site.

Note : Dans WordPress, « post » signifie deux choses. Dans la base de données, une publication est une publication de n’importe quel type de publication, donc cela comprendra des pages, des fichiers joints, et tout le reste. Quand la plupart d’entre nous parlons de publications, nous voulons dire les articles de notre blog, qui appartiennent au type de publication « article ».

Types de publications WordPress : Pages

Si vous avez déjà un site WordPress, les pages sont l’autre type de contenu que vous connaissez. Il s’agit de contenu statique, conçu pour rester plus longtemps que les articles et pour fournir des informations sur les types de choses qui ne changent pas souvent. De bons exemples sont vos coordonnées ou la page « Qui sommes-nous » d’un site d’entreprise.

Les pages ne peuvent pas avoir de catégories ou d’étiquettes et ne sont pas conçues pour être affichées sur les pages d’archive. Au lieu de cela, les visiteurs y accéderont via votre menu de navigation.

Note : Dans le jargon Internet, une page peut signifier n’importe quel type de page sur votre site. Lorsque l’Internet s’est développé au début, il se composait uniquement de contenu statique qui devait être codé directement par l’écriture HTML. Ainsi, une « page web » peut être n’importe quel type de page sur votre site, y compris une page statique en termes WordPress, une page d’archive, ou un article. Dans cet article, quand je fais référence à des pages, j’entends la page en termes WordPress, c’est-à-dire une page statique. Parfois, je fais référence à des pages d’archives, mais ce ne sont pas des pages dans le sens où vous créez une page pour les stocker. WordPress le fait pour vous.

Types de publications WordPress : Fichiers jointes

Un fichier joint est un élément multimédia qui a été téléversé sur votre site. Dans la base de données WordPress, il ne s’agit pas du fichier multimédia lui-même, mais des données qui s’y rapportent. Ainsi, chaque fichier joint aura un identifiant unique et des métadonnées telles que son titre, sa description, son texte ALT, et plus encore.

Chaque fichier joint a également sa propre page de fichier joint avec une URL unique. Vous pouvez trouver l’URL de ce fichier joint via l’écran d’édition média de ce fichier joint :

L'écran d'édition des fichiers joints dans WordPress
L’écran d’édition des fichiers joints dans WordPress

Les fichiers joints peuvent être n’importe quel type de téléversement : images, vidéos, fichiers pdf, et plus encore. Vous pouvez y accéder et les modifier via l’élément Média dans le menu d’administration de WordPress, ou vous pouvez les téléverser directement dans les articles/pages lorsque vous les modifiez. Tout fichier joint que vous téléversez dans un article sera alors disponible pour être modifié et visualisé via le menu Média.

Types de publications WordPress : Révisions

Nous passons maintenant aux types de publications un peu plus obscurs.

Chaque fois que vous enregistrez une nouvelle version d’un article, d’une page, d’un fichier joint ou d’un type de publication personnalisé, WordPress crée une révision pour refléter cette version de l’article (ou de la page, etc.).

Vous pouvez consulter les révisions de n’importe quel article ou page de votre site en allant à l’écran d’édition correspondant et en ouvrant l’onglet Document sur le côté droit. Vous verrez ici une notification vous indiquant le nombre de révisions de cette publication. Ci-dessous vous pouvez voir une capture d’écran d’un article que je suis en train de modifier et qui a actuellement cinq révisions.

Révisions dans l'écran d’édition d’article de WordPress
Révisions dans l’écran d’édition d’article de WordPress

Si vous n’utilisez pas l’éditeur Gutenberg, vous pouvez accéder aux révisions en faisant défiler vers le bas de l’écran d’édition et en trouvant une liste ici :

Révisions dans l'écran d’édition WordPress classique
Révisions dans l’écran d’édition WordPress classique

Si vous cliquez sur la case Révisions, vous serez dirigé vers un écran affichant vos deux dernières versions de votre article. À partir d’ici, vous pouvez revoir les révisions et revenir à une version antérieure de l’article.

WordPress créera beaucoup de révisions pour votre site au fil du temps, ce qui signifie que la base de données en sera pleine (voici le guide de Kinsta sur comment gérer les révisions pour des performances plus rapides) ! Mais les révisions sont un type de publication comme les autres, et elles sont stockées de la même manière – et d’autres sous peu.

Types de publications WordPress : Menus de navigation

Les menus de navigation, ou plus précisément les éléments de vos menus de navigation, sont aussi un type de publication.

Chaque élément de votre menu de navigation est enregistré comme un élément dans la base de données. Grâce à ses métadonnées, WordPress sait qu’il s’agit d’un élément de menu de navigation, où il doit apparaître exactement dans le menu de navigation et où il envoie.

Vous ne pouvez pas modifier les éléments du menu de navigation de la même façon que vous le feriez pour les autres types de publications. Au lieu de cela, vous les modifiez via l’outil de personnalisation ou l’écran Menus.

Types de publications WordPress : CSS personnalisé

Si vous ajoutez des CSS personnalisés via l’outil de personnalisation, votre travail sera enregistré en utilisant ce type de publication personnalisé. Un nouvelle publication (du type de publication « CSS personnalisé ») sera enregistrée pour les CSS personnalisés relatifs à chaque thème de votre site, et WordPress n’utilisera que celui du thème actuellement actif.

Types de publications WordPress : Ensemble de changements (Changesets)

Les ensemble de changements sont un peu comme les révisions, mais au lieu de s’appliquer aux articles, ils s’appliquent à l’outil de personnalisation. Lorsque vous effectuez une modification à l’aide de lapersonnalisation, elle est enregistrée en tant qu’ensemble de changements, de la même manière qu’un brouillon.

Maintenant que nous avons travaillé sur l’ensemble du spectre des types de publications WordPress, passons à la suite pour en savoir plus sur les types de publications personnalisés WordPress.

La différence entre un type de publications et un type de publications personnalisé

Récapitulons rapidement : une publication peut être l’une des deux choses suivantes.

Un type de publication est un type de publication (au sens large) auquel appartient un contenu donné. Et un « post » est un type de publication, comme « page », « fichier joint » ou tout type de publication personnalisé que vous enregistrez (je sais, c’est déroutant mais je vais approfondir dans une minute).

Par contre, votre type de publication personnalisé n’est pas un type de « publication » dans le sens d’un article de blog. C’est un type de publication dans le sens de toutes les publications (de tous les types de publications) qui sont stockés dans la base de données.

Types de publications personnalisés WordPress : Utilisations courantes

Donc maintenant nous savons ce qu’est un type de publication personnalisé. Mais quand pourriez-vous en avoir besoin ? La réponse est chaque fois que vous voulez ajouter du contenu à votre site qui n’entre pas dans l’un des types de publication intégrés.

Voici quelques exemples courants de types de publications personnalisés :

Ce sont là certains des cas d’utilisation les plus courants, mais ce ne sont en aucun cas les seuls. Mon conseil pour décider d’utiliser ou non un type de publication personnalisé pour tout nouveau type de contenu est de vous poser la question suivante :

Est-ce que je veux afficher mon nouveau contenu dans la page principale du blog ou comme page statique, ou est-ce que je veux pouvoir l’afficher sur une page d’archive séparée ?

Dans certains cas, l’utilisation d’une catégorie pour séparer votre nouveau contenu peut suffire : peut-être que vous gérez un blog et voulez inclure des études de cas que vous pouvez les afficher sur leur propre page (en utilisant une catégorie « Étude de cas » que vous créez) et aussi afficher dans le blog principal. Mais si vous voulez garder votre nouveau contenu séparé de vos articles de blog, alors il est logique de lui créer un type de publication personnalisé.

Comment les types de publications sont stockés par WordPress

Les publications d’un type de publication personnalisé sont stockées de la même manière que les articles standard (et les pages, etc.) sont stockés. Examinons cela plus en détail.

Votre site WordPress possède un certain nombre de tables de base de données pour stocker le contenu et les réglages. Le nombre minimum de tables est de 12, mais votre site peut en avoir plus s’il exécute un multisite ou si vous avez une extension installée qui ajoute plus de tables.

Tables de base de données WordPress
Tables de base de données WordPress

Dans la capture d’écran ci-dessus, vous pouvez voir qu’il y a deux tables qui semblent avoir quelque chose à voir avec les publications : wp_posts et wp_postmeta.

La table wp_posts stocke tout le contenu de vos publications, de tous les types de publications. Peu importe qu’il s’agisse d’un article de blog, d’une page, d’une révision, d’un fichier joint ou d’un type de publication personnalisé : ils seront tous stockés dans cette table wp_posts.

WordPress connaît le type de publication de chaque publication car il aura une valeur dans le champ post_type de la table wp_posts. Cette valeur correspondra au nom du type de publication. Ainsi, lorsque vous ajoutez un nouvel article de blog, WordPress ajoutera un article à la table wp_posts, avec le post_type « post ». Et si vous enregistrez un type de publication personnalisé appelé « produit », par exemple, chaque nouveau produit que vous créez générera une ligne dans la table wp_posts avec « produit » comme valeur dans le champ post_type.

La table wp_postmeta sert à stocker les métadonnées de vos publication. Elle comporte quatre champs :

  • meta_id : l’id de cet élément dans la table wp_postmeta.
  • post_id : la publication auquelle cet élément de métadonnées correspond. Une publication peut avoir plusieurs lignes dans la table wp_postmeta.
  • meta_key : la clé pour ce type particulier de métadonnées. Par exemple, pour une page statique, une clé potentielle pourrait être page_template, qui indiquerait quel modèle de page est utilisé.
  • meta_value : la valeur du champ. Si une page (pour reprendre cet exemple) utilise le modèle de page par défaut, la meta_value ici sera « default ».

Ainsi, les types de métadonnées stockées pour une publication donnée seront différents selon le type de publication dont il s’agit.

Vous n’avez pas à vous soucier de savoir quelles données sont stockées dans wp_posts et lesquelles sont stockées dans wp_postmeta : mais il est utile de comprendre que tous les types de publications sont stockés au même endroit, car cela signifie que WordPress peut travailler avec eux tous de la même façon.

Comment les types de publications personnalisés interagissent avec les taxonomies et les champs personnalisés

Avant d’examiner comment vous enregistreriez un type de publication personnalisé dans WordPress, nous allons identifier comment un type de publication personnalisé interagira avec d’autres types de contenu personnalisé, à savoir les taxonomies personnalisées, et les champs personnalisés.

Taxonomies personnalisées

Les taxonomies dans WordPress sont utilisées pour catégoriser les publications de tout type de publication. Pour les articles standard, les deux taxonomies utilisées sont les catégories et les étiquettes.

Lorsque vous enregistrez votre type de publication personnalisé, vous pouvez choisir de lui affecter n’importe quelle taxonomie ou taxonomie existante. Vous pouvez y ajouter la taxonomie « catégorie » lorsque vous enregistrez la taxonomie. Je vous montrerai comment le faire sous peu lorsque je vous montrerai la technique de création d’un type de publication personnalisé.

Alternativement, vous pouvez créer des taxonomies complètement nouvelles pour votre type de publication personnalisé, ce qui est également une approche courante.

Ainsi, par exemple, si vous créez un type de publication « produit » pour un site de commerce électronique, vous pouvez créer une taxonomie « section » pour trier vos produits en sections dans votre boutique.

Si vous créez un type de department « événement », vous pouvez créer une taxonomie de « type événement », qui pourrait spécifier s’il s’agit d’un concert, d’une lecture de poésie ou d’une soirée comédie.

Les taxonomies que vous créez dépendent de vous et de la façon dont vous voulez trier et afficher vos publication à partir de votre type de publication personnalisé.

Champs personnalisés

Un autre type de contenu personnalisé que vous avez dans WordPress est celui des champs personnalisés, également connus sous le nom de métadonnées publication. Les champs personnalisés sont des métadonnées supplémentaires que vous pouvez ajouter à n’importe quelle publication tant que le type de publication les supporte. Lorsque vous enregistrez un type de publication personnalisé, vous pouvez inclure un support de champ personnalisé avec cette ligne :

supports => array( 'custom-fields' );

Ceci est passé comme un tableau pour que vous puissiez ajouter la prise en charge de plusieurs options.

Donc si vous voulez ajouter des métadonnées à votre type de publication personnalisé, comme les tailles ou les couleurs dans une boutique de vêtements avec le type de publication « produit », vous pouvez utiliser un champ personnalisé pour le faire.

Les champs personnalisés sont différents des taxonomies personnalisées parce que vous ne les utiliseriez pas pour modifier une page d’archive.

Voici un exemple pour une boutique de vêtements. Vous auriez une page d’archives pour chaque exemple de taxonomie « section », par exemple « femmes », « hommes », etc. Imaginez que vous avez aussi un champ personnalisé appelé « Taille ». Vous ne créeriez pas une page d’archive pour chaque taille, car ce n’est pas quelque chose que vos clients s’attendent à voir.

Suivez cette règle pour vous aider à déterminer si vous devez utiliser une taxonomie personnalisée ou un champ personnalisé pour ajouter plus de données à votre publication : Aurez-vous besoin de l’afficher dans une page d’archive ?

Je vous montrerai plus tard comment modifier des pages d’archives pour votre type de publication personnalisé et vos taxonomies personnalisées.

Comment ajouter un type de publication personnalisé avec un plugin

Vous savez donc ce que sont les types de publication personnalisés et vous savez que vous en avez besoin pour votre site : comment les ajouter ?

Il y a deux façons : en utilisant une extension, et en le codant manuellement. Commençons par la route des extensions.

Il existe deux types d ‘extensions que vous pouvez utiliser pour enregistrer un type de publication personnalisé : la première enregistrera un type de publication personnalisé afin d’ajouter les fonctionnalités fournies avec l’extension, et la seconde vous fournira une interface que vous pourrez utiliser pour créer votre propre type de publication.

Le premier exemple inclut une variété d’extensions incluant des extensions de commerce électronique, des extensions d’événements, et plus encore. Commençons par l’une des extensions WordPress les plus populaires, WooCommerce.

Comment utiliser WooCommerce pour enregistrer des types de publications personnalisés

WooCommerce est un exemple d’extension qui enregistre un type de publication personnalisé pour fonctionner. Dans ce cas, c’est le type de publication « produit ».

Produits listés dans WooCommerce
Produits listés dans WooCommerce

WooCommerce enregistre également des taxonomies et des champs personnalisés pour vous permettre d’organiser votre boutique, y compris les catégories de produits et les étiquettes de produits. Celles-ci sont différentes des catégories et des étiquettes que vous utiliseriez pour vos billets de blog.

Comment utiliser l’extension Events Calendar pour enregistrer des types de publications personnalisés

L’extension Events Calendar est une autre extension qui utilise un type de publication personnalisé. Dans ce cas, c’est le type de publication « événement ».

Événements créés par l’extension Events Calendar
Événements créés par l’extension Events Calendar

L’extension ajoute une taxonomie qui est unique aux événements : « catégorie d’événement ». Elle applique également des étiquettes normales aux événements, de sorte que vous pouvez utiliser les mêmes étiquettes que celles que vous utilisez pour vos articles de blog.

Comment utiliser WP Google Maps pour enregistrer des types de publications personnalisés

Tout comme WooCommerce et The Events Calendar, WP Google Maps est une extension de carte WordPress qui enregistre un type de publication personnalisé pour vos cartes.

Une carte créée par l’extension WP Google Maps
Une carte créée par l’extension WP Google Maps

Le type de publication « carte » fonctionne différemment du type de publication produit ou événement des extensions précédentes car vous n’afficheriez pas une page d’archive de toutes vos cartes : au lieu de cela, l’extension vous donne un code court pour chaque carte que vous créez, que vous intégrez dans un article ou une page dans votre site. Mais bien que vous ne puissiez pas afficher les cartes de la même manière que vous le feriez pour d’autres types de publications, c’est quand même un type de publication.

Comment utiliser le plugin Custom Post Type UI

Si vous souhaitez enregistrer votre propre type de publication personnalisé au lieu de celui qui fait partie des fonctionnalités plus larges fournies par une extension tel que WooCommerce, vous pouvez utiliser une extension qui vous fournit une interface conçue pour faciliter l’enregistrement d’un type de publication personnalisé.

L’une de ces extensions est l’extension Custom Post Type UI.

L’extension Custom Post Type UI
L’extension Custom Post Type UI

Cette extension vous permet d’enregistrer vos propres types de publications personnalisés en utilisant les écrans d’administration, sans avoir à écrire de code.

Elle vous donne un ensemble d’écrans qui vous permettent d’ajouter tous les éléments d’enregistrement d’un type de publication que vous ajouteriez en utilisant la fonction register_post_type(). Pour ajouter un nouveau type de publication avec l’extension, allez dans CPT IU > Ajouter/Modifier des types de publication.

Ajout d'un type de publication avec l’extension Custom Post Type UI
Ajout d’un type de publication avec l’extension Custom Post Type UI

A partir de là, vous pouvez ajouter un nouveau type de publication ou modifier ceux que vous avez déjà enregistrés.

Vous pouvez modifier les réglages pour le type de publication ou vous pouvez laisser les réglages par défaut. Vous trouverez une documentation complète sur tous les réglages et options pour un type de publication dans le Codex WordPress.

Réglages pour l’extension Custom Post Type UI
Réglages pour l’extension Custom Post Type UI

Vous pouvez également utiliser l’extension pour enregistrer une taxonomie personnalisée et l’affecter à votre nouveau type de publication ou à tout type de publication existant. Et lorsque vous utilisez l’extension pour enregistrer un type de publication, vous pouvez lui assigner toutes les taxonomies existantes au fur et à mesure que vous le faites.

Comment utiliser le plugin Pods pour enregistrer des types de publication personnalisés

L’extension Pods est une autre extension qui vous donne une interface conçue pour vous permettre d’enregistrer un type de publication personnalisé sans écrire de code.

Pods vous permet également d’étendre vos types de publication existants. Vous pouvez donc ajouter des champs supplémentaires à un type de publication ou à une taxonomie existants et modifier leurs réglages.

Créer des types de publication avec l’extension Pods
Créer des types de publication avec l’extension Pods

L’extension Pods utilise un type de publication (« pod ») pour stocker toutes vos personnalisations, et vous permet également d’enregistrer vos propres types de publications un peu comme l’extension Custom Post Type UI, mais avec une interface conçue pour vous guider dans le processus. Cela signifie que l’extension peut rendre le processus plus facile, mais elle ajoute beaucoup plus de code à votre site (et de données à votre base de données) que si vous aviez codé le type de publication vous-même.

Alternativement, si vous préférez ne pas installer d’extension pour gérer le processus d’enregistrement de votre type de publication, vous pouvez le coder vous-même.

Comment enregistrer votre propre type de publication personnalisé dans WordPress

Si vous êtes à l’aise pour écrire du code, vous pouvez utiliser la fonction register_post_type() pour enregistrer votre type de publication personnalisé. C’est la façon la plus efficace de le faire.

Les meilleures pratiques nous disent de mettre du code pour un type de publication personnalisé dans une extension, plutôt que dans votre thème. C’est parce que si vous changez de thème à l’avenir, vous ne voudrez pas perdre le type de publication et toutes les publications que vous avez créés avec ce type de publication. Cela signifie également que si vous mettez à jour votre thème, vous ne perdrez pas votre type de publication.

Passons en revue les étapes pour enregistrer votre propre type de publication personnalisé dans WordPress.

Création de votre extension

La première étape consiste à créer votre extension. Dans le dossier wp-content/plugins de votre site de développement ou de test (pas encore votre site de production), ajoutez un dossier pour votre extension. Dans ce dossier, ajoutez un fichier PHP. J’appelle le mien kinsta-register-posttype.php.

Astuce : J’aime toujours créer une extension à l’intérieur d’un dossier au lieu de simplement ajouter un fichier extension dans le dossier wp-content/plugins. De cette façon, si j’ai besoin d’ajouter plus de fichiers à mon extension, comme des fichiers include, des scripts ou des styles, j’ai déjà un dossier prêt à les contenir.

Maintenant dans votre nouveau fichier php, ajoutez le texte d’ouverture commenté pour votre extension :

<?php
/*
Plugin Name: Register Custom Post Types
Plugin URI: http://rachelmccollin.com
Description: Plugin to register the book post type
Version: 1.0
Author: Rachel McCollin
Author URI:http://rachelmccollin.com
Textdomain: kinsta
License: GPLv2
*/

Ceci donne à WordPress (et à l’utilisateur) des informations clés sur l’extension :

  • Comment elle s’appelle
  • Où vous pouvez trouver plus d’informations
  • Ce qu’elle fait
  • Le numéro de version
  • Qui l’a développé, et où vous pouvez en savoir plus à son sujet
  • Le text domain pour l’internationalisation
  • La licence, qui doit toujours être GPL.

Ainsi, votre extension est maintenant configurée et si vous le souhaitez, vous pouvez l’activer dans les écrans d’administration. Elle ne fera encore rien si vous le faites.

Configuration de la fonction pour votre type de publication

Commençons maintenant à créer la fonction pour enregistrer votre type de publication. Dans mon exemple, je vais créer un type de publication appelé « livre », comme c’est le cas pour un site imaginaire de critiques de livres. Ce que vous utiliserez sera évidemment différent et dépendra de la raison pour laquelle vous utilisez votre type de publication personnalisé.

Sous le texte commenté, ajoutez ceci :

function kinsta_register_post_type() {

}
add_action( 'init', 'kinsta_register_post_type' );

Cette fonction contiendra tout le code pour votre type de publication personnalisé. Vous pouvez changer son nom pour ajouter votre propre préfixe au lieu de kinsta_. C’est une bonne pratique d’utiliser un préfixe sur toutes vos fonctions afin de ne pas entrer en conflit avec le nom d’une fonction fournie par votre thème ou les autres extensions que vous utilisez.

Le reste du code sera ajouté à l’intérieur des accolades de cette fonction.

Définition des libellés pour votre type de publication personnalisé

Maintenant, il est temps de définir les libellés pour votre type de publication personnalisé, à l’intérieur ajoutez ceci :

$labels = array(
 'name' => __( ‘Books’, ‘kinsta’ ),
 'singular_name' => __( 'Book', ‘kinsta’ ),
 'add_new' => __( 'New Book', ‘kinsta’ ),
 'add_new_item' => __( 'Add New Book', ‘kinsta’ ),
 'edit_item' => __( 'Edit Book', ‘kinsta’ ),
 'new_item' => __( 'New Book', ‘kinsta’ ),
 'view_item' => __( 'View Books', ‘kinsta’ ),
 'search_items' => __( 'Search Books', ‘kinsta’ ),
 'not_found' =>  __( 'No Books Found', ‘kinsta’ ),
 'not_found_in_trash' => __( 'No Books found in Trash', ‘kinsta’ ),
);

Vous devrez changer le vôtre si votre type de publication personnalisé n’est pas « livre ». Il y a d’autres libellés que vous pouvez utiliser, mais je trouve que celles qui précèdent ont tendance à être suffisantes pour mes besoins.

Notez que j’utilise l’internationalisation dans mes libellés pour qu’ils soient traduits dans la langue locale pour les utilisateurs.

Définition des arguments pour votre type de publication personnalisé

L’étape suivante consiste à définir les arguments, dont l’un sera le tableau de libellés que nous avons déjà ajouté.

Sous les libellés et toujours à l’intérieur, ajoutez ceci :

$args = array(
 'labels' => $labels,
 'has_archive' => true,
 'public' => true,
 'hierarchical' => false,
 'supports' => array(
  'title',
  'editor',
  'excerpt',
  'custom-fields',
  'thumbnail',
  'page-attributes'
 ),
 'taxonomies' => 'category',
 'rewrite'   => array( 'slug' => 'book' ),
 ‘show_in_rest’ => true
);

Jetons un coup d’œil à ce que font toutes ces choses.

  • L’argument labels est le tableau de libellés que nous avons déjà défini.
  • has_archive' => true active une archive de type de publication pour le type de publication personnalisé. Cette valeur par défaut est false, donc j’aime la remplacer et me donner l’option d’utiliser une archive de type publication (que je vous montrerai comment utiliser sous peu).
  • public' => true permet d’inclure le type de publication dans les résultats de recherche et dans les requêtes personnalisées. Encore une fois, la valeur par défaut est false et c’est quelque chose que j’aime remplacer.
  • La valeur « hierarchical » dépendra de la façon dont vous voulez utiliser votre type de publication personnalisé. Si vous mettez ceci à true, alors le type de publication se comportera comme des pages, avec une hiérarchie possible et des publication parentes et enfants de n’importe quelle publication de votre type de publication. Si vous le mettez à false, il se comportera comme une publication, sans hiérarchie.
  • Le tableau « supports » définit un certain nombre de caractéristiques des types de publications qui peuvent avoir ce type de support. J’aime m’assurer que les fonctions telles que les images mises en avant et les champs personnalisés sont activées.
  • L’argument « taxonomies » définit les taxonomies existantes qui s’appliquent à ce type de publication. Ici, j’utilise la taxonomie « category ». Si vous voulez utiliser une taxonomie personnalisée à la place et que vous ne l’avez pas encore enregistrée, sautez simplement cette ligne et enregistrez la taxonomie au type de publication. Si vous avez déjà enregistré une taxonomie personnalisée, vous pouvez l’ajouter à la publication en utilisant cette ligne.
  • J’utilise l’argument « rewrite » parce que je vais donner à la taxonomie un nom différent de celui que je veux utiliser pour son slug. Je vous expliquerai cela plus en détail tout à l’heure.
  • ‘show_in_rest' => true assure que le type de publication est disponible pour l’API REST et l’interface Gutenberg. C’est false par défaut, ce qui n’a aucun sens pour moi – je veux que tous mes types de publication utilisent la même interface d’édition !

Voilà donc tous les arguments avancés. Mais nous n’avons pas encore enregistré le type de publication. Il est temps d’arranger ça.

Ajout de la fonction register_post_type()

L’étape finale est de rassembler tout cela dans la fonction register_post_type().

Sous vos arguments, et toujours à l’intérieur, ajoutez ceci :

register_post_type( ‘kinsta_book', $args );

Ceci enregistre le type de publication « kinsta_book », avec les arguments que nous avons déjà définis.

Maintenant, vous comprendrez peut-être mieux pourquoi j’ai utilisé l’argument de la « rewrite » tout à l’heure. J’aime ajouter un préfixe aux noms de mes types de publications, pour être sûr qu’ils n’entreront en conflit avec aucun type de publication ajouté par des extensions tierces, mais je ne veux pas que le préfixe soit rendu public.

Par défaut, lorsque WordPress affiche un exemple de votre type de publication, il utilise le nom du type de publication dans l’URL. Ainsi, mon livre intitulé « My Wonderful Book » aurait une url de mysite.com/kinsta_book/my-wonderful-book. Je ne veux pas cela, donc j’utilise cet argument « rewrite » pour changer l’URL en mysite.com/book/my-wonderful-book. Ça a l’air d’aller beaucoup mieux, hein ?

Enregistrez maintenant votre fichier et activez votre extension dans l’admin WordPress. Vous verrez qu’un nouveau type de publication est apparu dans le menu administrateur.

Le type de publication « livres » dans les écrans d'administration
Le type de publication « livres » dans les écrans d’administration

Le type de publication est maintenant enregistré et prêt à être utilisé sur votre site. Prenez le temps d’y ajouter des publication (les publication de votre type de publication personnalisé, pas les articles de blog – WordPress peut devenir confus parfois !) et ensuite nous verrons comment vous pouvez afficher vos publication à partir de votre type de publication personnalisé sur l’interface publique de votre site.

Comment afficher les types de publication personnalisés WordPress dans votre site

La plupart des types de publication personnalisés que vous ajoutez à votre site fonctionneront comme des articles, ce qui signifie qu’ils sont conçus pour être affichés dans des pages d’archives. Peut-être utilisez-vous une taxonomie personnalisée pour les afficher, ou peut-être avez-vous ajouté la taxonomie « catégorie » comme moi.

Alternativement, si vous avez utilisé une extension comme WooCommerce qui ajoute des types de publication personnalisés afin d’ajouter des fonctionnalités spécifiques à votre site, alors cette extension peut ajouter des pages spécifiques (comme la « page de boutique ») conçues pour afficher votre type de publication personnalisé.

Les quatre options dont vous disposez pour afficher les types de publication personnalisés sont :

  • Afficher la publication individuelle (c’est à dire le livre, dans mon exemple)
  • Afficher l’archive complète des types de publication, avec tous les livres listés.
  • Affichage d’une archive de taxonomie personnalisée, en utilisant une taxonomie que vous avez enregistrée pour votre type de publication personnalisé.
  • Intégrer les publications du type de publication personnalisé (par ex. livres) dans les archives d’une taxonomie existante telle que « catégorie », ou dans la page principale du blog.

Examinons chacun d’entre eux à tour de rôle.

Attention ! Si à n’importe quel moment de ce processus vous ne pouvez pas accéder aux archives ou aux publication individuelles pour votre type de publication personnalisé, c’est parce que WordPress n’a pas encore écrit les permaliens pour eux. Pour résoudre ce problème, allez dans Réglages > Permaliens et cliquez simplement sur le bouton Enregistrer les changements. Ceci dira à WordPress de vérifier les nouveaux types de publication et de créer leurs URLs.

Affichage de l’archive de type de publication

La première option que vous avez est de créer une page d’archive de toutes les publication dans votre archive de types de publication personnalisés.

Si vous avez défini « has_archive » en true lors de l’enregistrement du type de publication, WordPress générera automatiquement une page d’archive pour votre type de publication. Vous pouvez l’ajouter à votre menu de navigation à l’aide de l’outil depersonnalisation.

Ajout de l’archive de votre type de publication dans le menu

Ouvrez la Personnalisation et sélectionnez l’option Menus. Sélectionnez votre menu principal et cliquez sur le bouton Ajouter des éléments pour ajouter des éléments supplémentaires à votre menu.

Ajout d'un élément de menu dans la personnalisation de WordPress
Ajout d’un élément de menu dans la personnalisation de WordPress

Sélectionnez votre type de publication parmi les options qui apparaissent et cliquez sur la flèche vers le bas à droite de son nom. Cela affichera la liste de toutes les publications que vous avez ajoutés, plus une option qui dans mon cas s’appelle All Books. Cliquez dessus et cela sera ajouté à votre menu.

Si vous cliquez ensuite sur cet élément dans le menu, vous pouvez modifier le libellé. Je préfère ne pas appeler le mien « Tous les livres », mais seulement « Livres ».

Modification de l'élément de menu Livres
Modification de l’élément de menu Livres

Notez que vous ne pouvez le faire que via la personnalisation – ce n’est pas possible dans l’écran Menus. Assurez-vous donc d’utiliser la personnalisation pour ajouter l’archive de votre type de publication personnalisé à votre menu.

Personnalisation de l’archive du type de publication

WordPress utilisera la hiérarchie des modèles pour identifier le fichier modèle de votre thème à utiliser pour afficher l’archive des types de publications personnalisés.

La hiérarchie des modèles WordPress
La hiérarchie des modèles WordPress

Si votre thème a un fichier archive.php, il l’utilisera, et si ce n’est pas le cas, il utilisera index.php.

Si vous souhaitez modifier la façon dont l’archive de type de publication personnalisé est affichée, vous pouvez alors créer un fichier modèle pour votre archive de type de publication personnalisé.

Pour un type de publication personnalisé spécifique, vous devez créer un fichier modèle appelé archive-$posttype.php, où $posttype est le nom de votre type de publication. Donc pour mon type de publication de livres, je créerais un fichier appelé archive-kinsta_book.php.

La façon la plus simple de créer ce fichier est de faire une copie du fichier archive.php dans votre thème. Renommez-le et modifiez-le pour qu’il affiche votre archive de type de publication comme vous le souhaitez.

Affichage des publication individuelles

Les publication individuels créés à l’aide d’un type de publication personnalisé seront également affichés en utilisant le premier fichier de modèle pertinent qui se trouve dans la hiérarchie des modèles.

Vous pouvez aller un peu plus loin avec des publications individuelles qu’avec des archives : non seulement vous pouvez créer un fichier modèle pour le type de publication (single-$posttype.php), mais vous pouvez aussi créer un fichier pour une publication spécifique de ce type de publication en utilisant le slug pour cette publication (single-$postype-slug.php).

Donc si j’ai ajouté Great Expectations à mon site de critiques de livres, je pourrais créer un fichier pour toutes les critiques de livres appelé single-kinsta_book.php, ou je pourrais créer un fichier cible pour ce livre appelé single-kinsta_book-great-expectations.php. Si je ne créais aucun de ces fichiers, WordPress utiliserait par défaut single.php ou (si cela n’existait pas) singular.php ou index.php.

Ajout de types de publications personnalisés à la page principale du blog

Par défaut, la page principale de votre blog n’inclura que le type de publication « post ». Mais que se passerait-il si vous vouliez aussi inclure votre type de publication personnalisé sur cette page, mélangé avec les articles du blog ?

Vous pouvez le faire en utilisant le hook pre_get_posts dans WordPress.

Dans l’extension où vous avez enregistré le type de publication, ajoutez ceci :

<?php
function kinsta_books_on_blog_page() {
 
 if ( $query->is_home() && $query->is_main_query() ) {
  $query->set( ‘post_type', array( ‘post’, ‘kinsta_book’ );
 }

}
add_action( 'pre_get_posts', 'kinsta_books_on_blog_page' ); ?>

Cela vérifie que nous sommes sur la page d’accueil (qui est la page du blog, même si ce n’est pas la page d’accueil de votre site) et que la requête principale est en cours (parce que vous ne voulez pas le faire dans un widget, par exemple). Si c’est le cas, il ajoute des articles et des livres à la requête.

Notez que vous devez inclure le type de publication « post » dans le tableau ainsi que le nouveau type de publication.

Résumé

Les types de publication personnalisés WordPress sont la caractéristique qui permet de passer d’une simple plateforme de blog à un véritable système de gestion de contenu. Ils vous permettent de créer des sites complexes et sur mesure qui peuvent servir de boutiques, de centres de référence, de sites médias ou de tout ce dont vous avez besoin.

Vous pouvez ajouter des types de publication personnalisés à votre site WordPress de l’une des trois façons suivantes. Vous pouvez utiliser une extension telle que WooCommerce qui enregistre un type de publication personnalisé lié à la fonctionnalité de l’extension. Vous pouvez utiliser une extension comme CPT UI ou Pods pour ajouter vos propres types de publication personnalisés. Ou vous pouvez écrire votre propre extension et utiliser la fonction register_post_type() pour enregistrer le type de publication en utilisant du code. Quelle que soit la méthode que vous utilisez, vous serez en mesure d’obtenir beaucoup plus de votre site WordPress.

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.