Création de types de publication personnalisés
Publié: 2016-08-23WordPress n'est plus une plate-forme « juste un blog » depuis un certain temps déjà. L'une des principales caractéristiques qui l'a aidé à se transformer en un système de gestion de contenu (CMS) approprié est les types de publication personnalisés .
Ceci est le premier article d'une série en 3 parties sur le thème des types de publication personnalisés (CPT). Voici les sujets que nous aborderons dans les deux prochains :
- Taxonomies personnalisées
- Affichage des types de publication personnalisés (modèles et requêtes)
Mais pour l'instant, examinons de plus près les types de publication personnalisés et comment les configurer.
Qu'est-ce qu'un type de publication personnalisé ?
Par défaut, WordPress utilise ces types de publication :
- Poster
- Page
- Attachement
- Révision
- Élément du menu
Alors, qu'est-ce qu'un type de publication personnalisé ? Un type de publication personnalisé est essentiellement un article WordPress avec des paramètres définis personnalisés (champs personnalisés, structure de catégorie/tag personnalisée, …). Les exemples classiques de types de publications personnalisées sont : les livres, les critiques, les témoignages, les membres de l'équipe, les portefeuilles, etc. Mais vous pouvez l'utiliser pour tout ce qui indique le type de contenu que vous créez.
Pourquoi en utiliseriez-vous un ?
Vous pouvez simplement utiliser des publications WP régulières et utiliser des catégories et des balises pour séparer les différents "types de publication". Mais ce n'est pas idéal et peut entraîner des complications sur la route. Voici quelques raisons pour lesquelles vous pourriez vouloir utiliser un type de publication personnalisé :
- Si vous souhaitez séparer du contenu des autres types de publication disponibles dans WordPress
- Vous avez besoin de champs personnalisés exclusifs au contenu que vous souhaitez publier
- Vous devez afficher le contenu différemment des autres types de publication (comme les publications ou les pages)
Disons que vous écrivez un blog culinaire. Vous publiez généralement des critiques de restaurants, mais vous aimeriez également publier vos propres recettes. Les recettes feraient un type de publication personnalisé parfait , car vous auriez probablement besoin d'une mise en page différente de celle d'une publication régulière. Peut-être aussi des champs personnalisés, comme les ingrédients, par exemple. Avec l'introduction d'une recette CPT , la section blog ne contiendrait que votre message normal, et vos recettes auraient leur propre section (propre page d'archives de recettes). Cela faciliterait la tâche des visiteurs qui ne souhaitent que consulter vos recettes.
Dans cette série d'articles, nous allons créer les témoignages CPT pour notre thème Shaka. Supposons qu'un utilisateur souhaite disposer d'une page sur laquelle il peut afficher tous les témoignages de clients. Il souhaite ajouter quelques champs personnalisés à ce type de publication personnalisé et souhaite également une mise en page différente pour afficher ces témoignages. Voyons d'abord comment enregistrer un type de publication personnalisé.
Comment pouvez-vous créer un type de publication personnalisé ?
Il existe deux façons de créer un nouveau type de publication personnalisé.
La première option consiste à utiliser un plugin qui enregistrera le type de publication personnalisé pour vous. Cette méthode convient aux utilisateurs qui ne sont pas familiers avec le code PHP. Vous ne saisissez que les détails nécessaires et le plugin fait le reste.
La deuxième méthode consiste à enregistrer manuellement le type de message personnalisé. Cela signifie que vous devez écrire du code, mais pas de panique, c'est assez simple et je vais aussi vous montrer une astuce.
Créez un type de publication personnalisé avec un plugin - le moyen le plus simple
Si vous souhaitez ajouter rapidement et facilement un type de publication personnalisé à votre site, vous devez utiliser un plugin qui offre une telle fonctionnalité. Le plugin le plus populaire pour ce faire est probablement l'interface utilisateur de type de message personnalisé, il est gratuit et facile à utiliser. Configurons-le :
- Installez et activez le plugin Custom Post Type UI depuis votre tableau de bord wp-admin,
- Une fois que vous avez activé le plugin, l'élément de menu d'administration de l'interface utilisateur CPT sera disponible. Accédez à l'interface utilisateur CPT > Ajouter/Modifier les types de publication,
- Vous trouverez ici de nombreux paramètres que vous pouvez appliquer pour personnaliser votre CPT. Nous ne les détaillerons pas tous dans cet article. Mais il y a une icône d'info-bulle à côté de chaque étiquette de paramètre pour expliquer ce que fait chaque paramètre. Définissons les choses dont nous avons besoin pour notre cas d'utilisation (témoignage CPT),
- Entrez la limace : témoignages, libellé au pluriel : Témoignages et le libellé au singulier : Témoignage,
- Vous pouvez cliquer sur le bouton Modifier les étiquettes supplémentaires pour définir des étiquettes plus précises. Mais nous pouvons sauter cela et revenir si nous voyons un problème plus tard,
- Tous les paramètres par défaut sont corrects pour notre cas d'utilisation, nous ajouterons simplement la prise en charge des champs personnalisés (cochez la case Champs personnalisés dans la section Prise en charge),
- Cliquez sur Ajouter un type de publication pour créer le type de publication personnalisé.
Dès que nous créons le type de publication personnalisé, un nouvel élément de menu du tableau de bord Témoignages wp-admin apparaît. Nous pouvons maintenant créer de nouveaux témoignages avec tous les champs qui ont été sélectionnés lors de la création du type de publication personnalisé (titre, éditeur, image en vedette et champs personnalisés).
Nous pourrions également définir une taxonomie pour ce type de publication personnalisé, mais nous en parlerons dans le prochain article.
Créer manuellement un type de publication personnalisé - codage impliqué
Vous pourriez vous demander : si vous pouvez créer un type de publication personnalisé avec un plugin, pourquoi quelqu'un voudrait-il le créer manuellement, avec du code ?
La possibilité d'en créer un avec un plugin est certes très pratique , mais il y a des cas où vous voudriez le faire via du code. Par exemple, si vous développez un site pour votre client et que vous ne souhaitez pas que le client puisse modifier ces paramètres, ou si vous ne souhaitez pas installer un plugin de plus sur son site. De plus, si vous souhaitez créer un thème (ou un thème enfant) à utiliser sur plusieurs sites, il est plus facile d'avoir le type de publication personnalisé enregistré dans le code que de répéter les étapes du plugin pour chaque site. Il y a des avantages et des inconvénients pour chaque méthode, vous devez donc décider ce qui convient le mieux à votre cas.

Le code pour créer un type de publication personnalisé peut être placé directement dans un thème (dans functions.php ). Ou, vous pouvez créer un nouveau plugin et y mettre le code CPT. C'est aussi une question qui divise la communauté WordPress. Un côté dit qu'il devrait être situé dans le plugin , de sorte que si vous changez de thème, les données du CPT restent (mais la sortie n'est pas stylée et n'a pas l'air bien dans le nouveau thème). Et l'autre côté pense qu'il est préférable de mettre le code CPT directement dans le thème , car il est spécifique au thème et est également conçu spécifiquement pour ce thème.
Personnellement, je pense qu'il est toujours préférable de séparer le style (thème) de la fonctionnalité (plugins) et donc la création d'un nouveau plugin pour l'enregistrement CPT est une meilleure option. Il est plus facile d'ajouter un style au nouveau thème pour que la sortie CPT soit belle que de perdre les données du CPT en raison du passage à un nouveau thème.
Enregistrer un type de publication personnalisé avec code
J'ai promis une belle astuce, n'est-ce pas ? Eh bien, vous n'avez en fait pas besoin d'écrire de code pour pouvoir enregistrer un type de message personnalisé via le code. Cela peut sembler étrange, mais c'est vrai. Vous pouvez utiliser cet outil sur generatewp.com pour générer le code nécessaire à l'enregistrement CPT. Tout ce que vous avez à faire est de saisir des données et de générer le code. Je l'ai fait pour notre cas d'utilisation de témoignages et voici ce qui est ressorti :
// Register Custom Post Type function custom_post_type_testimonials() { $labels = array( 'name' => _x( 'Testimonials', 'Post Type General Name', 'text_domain' ), 'singular_name' => _x( 'Testimonial', 'Post Type Singular Name', 'text_domain' ), 'menu_name' => __( 'Testimonials', 'text_domain' ), 'name_admin_bar' => __( 'Testimonials', 'text_domain' ), 'archives' => __( 'Item Archives', 'text_domain' ), 'parent_item_colon' => __( 'Parent Item:', 'text_domain' ), 'all_items' => __( 'All Items', 'text_domain' ), 'add_new_item' => __( 'Add New Item', 'text_domain' ), 'add_new' => __( 'Add New', 'text_domain' ), 'new_item' => __( 'New Item', 'text_domain' ), 'edit_item' => __( 'Edit Item', 'text_domain' ), 'update_item' => __( 'Update Item', 'text_domain' ), 'view_item' => __( 'View Item', 'text_domain' ), 'search_items' => __( 'Search Item', 'text_domain' ), 'not_found' => __( 'Not found', 'text_domain' ), 'not_found_in_trash' => __( 'Not found in Trash', 'text_domain' ), 'featured_image' => __( 'Featured Image', 'text_domain' ), 'set_featured_image' => __( 'Set featured image', 'text_domain' ), 'remove_featured_image' => __( 'Remove featured image', 'text_domain' ), 'use_featured_image' => __( 'Use as featured image', 'text_domain' ), 'insert_into_item' => __( 'Insert into item', 'text_domain' ), 'uploaded_to_this_item' => __( 'Uploaded to this item', 'text_domain' ), 'items_list' => __( 'Items list', 'text_domain' ), 'items_list_navigation' => __( 'Items list navigation', 'text_domain' ), 'filter_items_list' => __( 'Filter items list', 'text_domain' ), ); $args = array( 'label' => __( 'Testimonials', 'text_domain' ), 'labels' => $labels, 'supports' => array( 'title', 'editor', 'thumbnail', 'custom-fields' ), 'hierarchical' => false, 'public' => true, 'show_ui' => true, 'show_in_menu' => true, 'menu_position' => 5, 'show_in_admin_bar' => true, 'show_in_nav_menus' => true, 'can_export' => true, 'has_archive' => true, 'exclude_from_search' => false, 'publicly_queryable' => true, 'capability_type' => 'page', ); register_post_type( 'testimonials', $args ); } add_action( 'init', 'custom_post_type_testimonials' );
… Un code PHP parfaitement valide que vous pouvez utiliser dans vos projets. Comme indiqué précédemment, vous pouvez mettre ce code dans un plugin nouvellement créé, ou vous pouvez le mettre dans le fichier functions.php du thème. Par souci de simplicité, j'ai opté pour ce dernier. J'ai mis ce code dans le fichier functions.php du thème, et le menu Testimonials wp-admin est apparu et je peux maintenant créer de nouveaux témoignages (tout comme dans la méthode plugin ci-dessus).
Vous pouvez également définir une icône différente pour votre type de publication personnalisé, qui sera affichée dans le menu wp-admin. Il vous suffit d'ajouter cette ligne dans le tableau $args : 'menu_icon' => 'dashicons-businessman'
. Vous pouvez trouver une liste de toutes les icônes possibles ici : WordPress Dashicons. (Merci à Alexandre pour cette astuce).
Regardons de plus près le code :
- L'ensemble du processus d'enregistrement CPT est encapsulé dans la fonction
custom_post_type_testimonial()
, qui est accrochée au hookinit
WP à la fin de l'extrait avec cette ligne de code :add_action( 'init', 'custom_post_type_testimonials' );
. Cet appeladd_action
est l'appel final qui met tout en mouvement et fait que WordPress fasse de la magie. - Le premier bloc de code à l'intérieur de la fonction est un tableau de données appelé
$labels
, qui contient les chaînes de traduction pour ce type de publication personnalisé. - Le deuxième bloc est un tableau d'arguments utilisés pour l'enregistrement CPT, ici vous pouvez définir tous les paramètres pour le CPT. Quels champs le CPT doit prendre en charge, s'il est visible publiquement, la position du menu wp-admin, s'il a une page d'archive, etc. Pour voir l'ensemble complet d'options, veuillez visiter cette page du codex WP.
- La dernière ligne de la fonction est
register_post_type( 'testimonials', $args );
. Cela enregistrera le type de publication personnalisé "témoignages" avec les paramètres que nous avons spécifiés dans les$args
ci-dessus.
C'est ça! Nous avons enregistré un type de message personnalisé avec un peu de code PHP.
La seule amélioration que je changerais dans le code généré serait d'utiliser des fonctions d'internationalisation d'échappement. Ainsi, au lieu de _x()
et __()
j'utiliserais esc_html_x()
et esc_html__()
. Il est toujours bon d'échapper les valeurs de sortie - même les chaînes de traduction - mais c'est un sujet pour un autre article de blog.
Prochain article de la série : Comment créer une taxonomie personnalisée.