WordPress : Custom Post Types

image_pdf

WordPress permet de créer des types de contenus personnalisés (CPT – Custom Post Type) depuis la version 3 de WordPress (2010).  

Les CPT permettent de dépasser les limites des types de publications natifs que sont les articles et les pages.

Vous les retrouverez par exemple en installant l’extension WooCommerce qui vous proposera de gérer des Produits.

Autres exemples de types de contenus personnalisés :   

  • Fiches recettes de cuisine,  
  • Bien immobilier,
  • Formations,
  • Définitions,
  • Cours,
  • Services,
  • Menu du jour,
  • Réalisations (portfolio)

Les CPT permettent de bien distinguer vos différents types de contenus et grâce à la logique de Template Hierarchy de leur appliquer une mise en page spécifique.

Les Custom Post Types peuvent être créés par programmation PHP, ou via l’intermédiaire d’une extension WordPress  (ex. Custom Post Type UI).  

Ils sont stockés dans la table wp_posts, ils portent le slug du CPT dans la colonne ‘post_type‘.

Méthode par Custom Post Type UI

La gestion de Custom Post Type UI est accessible depuis le menu CPT UI.

Custom Post Type UI : Custom Post Type

CPT UI > Ajouter/modifier des types de publication 

CPT UI génère le code PHP nécessaire à la déclaration du CPT.

Une fois le Custom Post Types créé, vous pouvez l’utiliser :  ex. un nouveau menu « Réalisations »  est apparu dans le Tableau de bord WordPress.

Ajout possible de taxonomies (catégories, étiquettes).

Exemple :

  • Types de plats : comme des catégories d’articles, mais pour regrouper les plats dans un CPT Menu (entrées, plats, desserts)
  • Ingrédients : comme des étiquettes d’articles (cacahuètes, vinaigre de riz, vermicelles, etc)

Custom Post Type UI : Custom Taxonomies

Le principe est le même pour les Custom Taxonomies, qu’il vous faudra par contre associer à un ou plusieurs types de publications (“Attacher au type de publication“).

Re-générez les permaliens après avoir activé un CPT ou une nouvelle taxonomie !  Au risque de tomber sur une erreur 404 (rendez-vous dans Réglages > Permaliens et cliquez sur Enregistrer, sans rien changer aux réglages).

Custom Post Type UI : obtenir le code

CPT UI > Outils — onglet “Obtenir le code” 

Vous pouvez intégrer ces bouts de code dans le fichier functions.php de votre thème, dans un plugin… ou via l’extension Code Snippets.

Vous pouvez ensuite désactiver l’extension Custom Post Type UI.

Méthode par programmation

Fonction « register_post_type »

La déclaration d’un CPT est à effectuer depuis le fichier functions.php du thème actif, grâce à un hook et à l’utilisation de la fonction register_post_type().

Le premier paramètre de la fonction register_post_type() correspond au nom unique, le slug de votre CPT.

Il servira comme URL d’accès à la page d’archive : ex. https://www.monsite.fr/portfolio

Attention à ne pas changer le slug en cours de route ! Au risque de rendre inaccessible l’ensemble des publications de votre CPT.

Par défaut, c’est le modèle (template) archive.php qui va afficher vos publications liées à votre CPT.

Il sera par la suite possible de modifier ce comportement avec votre propre template personnalisé (ex. archive-portfolio.php).

Custom Post Type : support

Fonctionnalité (support)Description
titleLe champ titre
editorL’éditeur visuel (classique ou Gutenberg)
authorLe champ pour choisir / changer l’auteur
thumbnailLe champ image mise en avant
excerptLe champ extrait
commentsPrise en charge des commentaires
revisionsSauvegarde automatique / création de révisions

Vous n’êtes pas obligé de tout activer, ceci permet notamment d’alléger l’interface.
Ex. ne pas afficher l’éditeur visuel et ajouter des champs ACF.

Custom Post Type : menu_position

Position (menu_position)Description
5Juste après Articles
10Juste après Médias
20Juste après Pages
65Juste après Extensions
70Juste après Utilisateurs
80Juste après Réglages
100Tout en bas

Custom Post Type : menu_icon

La police dashicons est utilisée pour l’administration WordPress pour toutes les icônes de menu, mais vous pouvez utiliser une image différente format PNG — fond transparent – 20×20 pixels.

menu_icon‘ : avec dashicons ou un fichier .png

Remarque : vous pouvez également utiliser get_template_directory_uri() pour aller chercher un PNG présent dans votre thème.

Custom Post Type : autres arguments

  • exclude_from_search : true ou false pour définir si l’on inclut ou non le CPT dans les résultats de recherche
  • label / labels : nom au singulier et au pluriel
  • capability_type : définit si le CPT est assimilée à une page ou un post (article)
  • has_archive : définit si le CPT est accessible via une page d’archives (ex. moniste.fr/?post_type=portfolio)
  • public : si défini à true, le CPT sera visible de tous, sinon il ne sera pas visible des utilisateurs ayant un rôle auteur (ou inférieur)
  • show_in_admin_bar : définit si l’on veut ou non afficher l’élément dans la barre d’administration (dans la barre affichée en haut)
  • rewrite : permet de définir le slug utilisé par le CPT – par défaut moniste.fr/{nomduCPT}
  • show_in_rest : permet d’afficher le CPT dans l’API REST de WordPress, mais également d’utiliser l’éditeur Gutenberg (au lieu de l’éditeur classique Tiny MCE)

Remarque : le tableau $labels contient toutes les chaînes de caractères qui vont apparaître dans le Tableau de bord WordPress, si vous n’indiquez rien, la valeur par défaut sera utilisée, avec un contexte moins marqué (ex. “Ajouter une publication”, …).

Fonction « register_taxonomy »

Ajout possible de taxonomies (catégories, étiquettes)  avec la fonction « register_taxonomy ».

Ex. ingrédients, chanteur / groupe…

Quelques arguments :

  • hierarchical : définit s’il y a une relation parent / enfant (comme pour les catégories)
  • label / labels : nom au singulier et au pluriel

Méthode par Generate WP

Un générateur de CPT en ligne.

Que se passe-t-il en cas de suppression de la déclaration d’un CPT ?

Si vous supprimez la déclaration effectuée par la fonction register_post_type(), les publications rattachées au CPT ne seront pas supprimées de la base de données, toutefois, elles seront ignorées et inaccessibles.

Vous pourrez si besoin ajouter à nouveau cette même déclaration afin d’en retrouver l’accès.

À noter : en cas de changement de thème, le fichier functions.php va également changer, vos déclarations seront là aussi désactivées.

Comment ajouter un CPT dans un menu WordPress ?

Depuis Apparence > Menus, le nouveau CPT sera accessible dans la liste présente sur la gauche.

Cliquez sur Tout voir et Portfolio, puis Ajouter au menu.

Comment vérifier le type de publication actif ?

Grâce à la fonction get_post_type().

Remarque : la méthode get_post_types() permet quant à elle de retourner un tableau de tous les CPT disponibles.

Vous retrouvez plus d’informations sur la gestion des types de publication dans la documentation officielle WordPress.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.