Créer des Custom Posts en quelques minutes

WordPress Lecture 9 minutes • 31 mars 2017

Pour personnaliser vos pages selon vos besoins, vous savez déjà créer des Modèles de Page, n'est ce pas ? Et bien créer un Custom Post Type revient à créer un Modèle d'Article, ou traduit littéralement : Type d'Article Personnalisé.
Vous pouvez ainsi regrouper et afficher vos articles personnalisés sous forme de listes. Les cas d'utilisation sont nombreux : les cabinets d'architectes pour montrer leurs créations, les voyageurs blogueurs pour nous faire baver devant leurs escapades ou encore les adeptes de gastronomie qui souhaitent partager leurs meilleures recettes.
Et comme nous sommes dans le pays de la bonne bouffe, vous allez déguster tout au long de cet article (non pas que le tutoriel soit difficile, mais j'aime parler de bons petits plats).

Pour les adeptes du Plugin (solution simple)

Créer vos propres Custom Posts Types est possible très simplement grâce à une excellente extension gratuite nommée Custom Post Type UI. Ce module est une référence auprès de la communauté WordPress et fait un carton depuis plusieurs années.
Custom Post Type UI - Très bon PlugIn WordPress
Cependant, le choix de l'extension comprend quelques limites. Si elle se retrouve un jour désactivée (après une mauvaise manipulation ou une erreur de mise à jour), alors vos Custom Post Types n'apparaitrons plus dans votre interface d'administration.
Dans le cas ou vous travaillez avec prévoyance sur le site web d'un client, vous préférerez certainement l'option de la sécurité. Pour cela, la création manuelle de vos Custom Post Types reste encore la meilleure.
 

Créer manuellement un Custom Post Type

Si vous avez suivi, on passe à la solution virile et authentique. Ne fuyez pas, on va juste parler nourriture. Promis.
Nous imaginerons donc que nous souhaitons ajouter des fiches "Recettes" à notre site Internet.
D'abord, commencez par ajouter ce code à la suite dans votre fichier functions.php
 

// Notre fonction Article Personnalisé (Custom Post)
function create_post_type() {

register_post_type( 'recettes',
array(
'labels' => array(
'name' => __( 'Recettes' ),
'singular_name' => __( 'Recette' ),
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'recettes'),
)
);
}
add_action( 'init', 'create_post_type' );
Création basique d'un CPT Recettes

 
Notre morceau de code enregistre un type de post 'Recettes' avec un ensemble d'arguments qui sont en fait des options attribuées à notre nouveau custom post type.
On distingue deux parties distinctes :

  • Le Label qui est lui même un argument comprenant le nom au singulier et au pluriel de notre Custom Post Type
  • La seconde partie contient 3 autres arguments tels que la visibilité publique, les archives et le slug (ou terminaison) qui sera utilisé dans les URLs de notre type de post.

 
Voyons maintenant le résultat avec la solution complète. Ceci afin de donner plus d'options à notre custom post type :

/*
* Cette fonction va créer l'apparence de notre nouveau Custom Post,
* visible ensuite dans l'administration WordPress
*/

function custom_post_type() {

$labels = array(
'name' => _x( 'Recettes', 'Post Type General Name', 'twentyseventeen' ),
'singular_name' => _x( 'Recette', 'Post Type Singular Name', 'twentyseventeen' ),
'menu_name' => __( 'Recettes', 'twentyseventeen' ),
'parent_item_colon' => __( 'Recette Parente', 'twentyseventeen' ),
'all_items' => __( 'Toutes les Recettes', 'twentyseventeen' ),
'view_item' => __( 'Voir la Recette', 'twentyseventeen' ),
'add_new_item' => __( 'Ajouter une Nouvelle Recette', 'twentyseventeen' ),
'add_new' => __( 'Ajouter', 'twentyseventeen' ),
'edit_item' => __( 'Éditer une Recette', 'twentyseventeen' ),
'update_item' => __( 'Mettre à jour une Recette', 'twentyseventeen' ),
'search_items' => __( 'Rechercher une Recette', 'twentyseventeen' ),
'not_found' => __( 'Aucune Recette', 'twentyseventeen' ),
'not_found_in_trash' => __( 'Aucune Recette dans la corbeille', 'twentyseventeen' ),
);

// Paramètre d'autres options :

$args = array(
'label' => __( 'recettes', 'twentyseventeen' ),
'description' => __( 'Les meilleures recettes des cuisines du Monde', 'twentyseventeen' ),
'labels' => $labels,

// Ajoute les options suivantes à l'édition des articles Recettes
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'custom-fields', ),

// Vous pouvez associer le Type d'Article avec un taxonomie ou une taxonomie personnalisée.
'taxonomies' => array( 'cuisine' ),

'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-carrot', //icône associé au menu, ici une Carotte pour illustrer les recettes (plus d'infos dans la suite du tuto)
'can_export' => true,
'has_archive' => true,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'post', );

// On enregistre notre Type d'Article Personnalisé (Custom Post Type)
register_post_type( 'recettes', $args ); }

add_action( 'init', 'custom_post_type', 0 );
Création avancée/complète d'un CPT Recettes

 
Je vous vois venir : "Ouhla c'est quoi tout ça, j'y comprend rien et en plus je commence à avoir vraiment faim". Pas de panique, voici les explications simples de cet ajout de lignes à notre code de départ :

  • Des fonctionnalités (ligne 32) : vous pouvez choisir pour chacun de vos Articles Personnalisés, s'il doit afficher ou non dans l'administration WordPress, les éléments suivants : un titre (title), un auteur (author), un résumé (excerpt), une image à la une (thumbnail)...
  • Une Taxonomie (ligne 35) : nous avons associé notre custom post type à la taxonomie "cuisine"
  • L'usage de twentyseventeen répété (ligne 9 à 21, et 27-28) : 'twentyseventeen' est un text domain. Remplacez le par celui de votre propre thème WordPress afin de permettre à vos Custom Post Types d'être traduisibles en d'autres langues. Vous trouverez le text domain de votre thème dans l'en-tête du fichier style.css à la racine de votre site.
  • L'ajout d'un icône à notre menu (ligne 44) : Ici une carotte pour représenter nos Recettes. Vous pouvez personnaliser le choix de l’icône pour représenter vos Custom Post Type grâce aux icônes proposés par WordPress Dashicons

 

Afficher vos Custom Post sur votre site

On arrive au bout. Pour vous récompenser, n'hésitez pas à vous faire livrer des sushis tout en poursuivant ce tutoriel.
A présent, nous souhaitons afficher nos succulentes Recettes sur une Page nommée "Mes recettes préférées".

1 - Ajouter de nouvelles recettes

En passant par le menu Recettes > Ajouter. Veillez à bien remplir le champs titre, saisir le contenu de la recette dans l'éditeur de texte, et saisir un extrait. C'est le moment de faire baver vos internautes en mettant vos clichés les plus appétissants en Image à la Une.
Vous devez ensuite mettre à jour vos permaliens via Réglages > Permaliens depuis l'administration de WordPress. Sinon vous risquez de voir vos articles Recettes renvoyer vers une page 404.
Créer un Custom Post Type en quelques minutes !
 

2 - Créer un modèle de page

Nos articles de Recettes sont prêts. Encore faut-il une Page sur laquelle les afficher. Dupliquez page.php situé à la racine de votre thème WordPress et renommez la copie en page-recette.php. Ouvrez page-recette.php avec votre éditeur de texte préféré et insérez le code suivant :
Ajoutez d'abord ce bout de code tout en haut de votre fichier page-recette.php :
 

<?php
/*
Template Name: Modèle de Page Recettes
*/
?>

//Puis insérez les lignes de codes suivantes dans votre fichier page-recette.php comme ci-dessous :

<?php
query_posts(array(
	'post_type' => 'recettes',
	'showposts' => 10
) );
?>
<?php while (have_posts()) : the_post(); ?>
	<div class="recette">
	<?php the_post_thumbnail(); ?>
		<div class="text">
			<h2><b><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></b></h2>
			<p><i>Recette proposée par : <?php the_author(); ?></i></p>
			<p><?php echo get_the_excerpt(); ?></p>
		</div>
	</div>
<?php endwhile;?>
Création du modèle de page pour afficher nos Recettes

 
Afficher les Custom Posts dans une Page
 
Ce code va afficher nos articles de type 'Recettes' et limiter leur affichage à 10 par page (ligne 3).
Vient ensuite la requête qui va appliquer la mise en forme de l'affichage de nos articles recettes : ici nous souhaitons voir l'image de la recette (thumbnail), le titre (title), l'auteur (author) et l'extrait (excerpt). Libre à vous de choisir vos balises et d'en ajouter, selon vos besoins.
 

3 - Ajouter une nouvelle Page via l'administration de WordPress

Donnez le titre "Mes recettes préférées" à cette nouvelle Page. Enfin, sélectionnez le "Modèle de Page Recette" dans le bloc à droite nommé Attributs de page comme ci-dessous.
Créer un modèle de page WordPress
C'est le moment de voir si tout ça a de la gueule. Allez maintenant voir la page "Mes recettes préférées" et constatez avec beaucoup d'émotions que vos articles sont affichés (pour fêter ça, repassez une deuxième commande de sushis).
Il ne reste plus qu'à les styliser selon vos envies avec du CSS. Voici le résultat obtenu avec quelques lignes de style à partir du thème Twentyseventeen :
Afficher Custom Posts dans une Page
La mission est accomplie : vous avez gagné en compétences et j'ai tenu ma promesse de placer cet enseignement sous le signe de la gastronomie.
Cet article vous a plus ? Dîtes-le en commentaire et rejoignez-nous sur Facebook pour partager d'autres astuces et tutoriels gratuits !


Avis clients

Tibow Webdesign

Tous les avis

Loïc Perrière 6 janvier 2021

Ingénieur de recherches - CNRS / Recommandation LinkedIn
Lors du démarrage de projet de refonte du site web de mon laboratoire, j’ai contacté Thibaut pour obtenir des renseignements sur un travail qu’il avait déjà réalisé auprès d’un autre client.
Sa franchise et la clarté de ses réponses m’ont finalement convaincu de lui confier la conception de deux sites internet. Nos échanges ont toujours été constructifs, et Thibaut a fait preuve, tout au long du développement, de dynamisme et de réactivité, et a également réalisé de nombreuses propositions qui ont majoritairement été retenues. Enfin, il a su faire preuve d’écoute pour intégrer les problématiques et les demandes spécifiques d’un site internet de laboratoire public pour créer un site à notre image.
La collaboration a été fructueuse et constructive, et ça a été un réel plaisir de travailler avec lui.

Clara Deleuze 21 décembre 2020

Principal Chief Executive Officer chez On Divorce / Recommandation LinkedIn
Je collabore avec Thibault depuis plus de 10 ans.
Plus qu'un dev Full Stack c'est un profil au sens logique qui sera vous accompagner plus globalement sur votre projet IT.
Je lui ai confié plus de 5 projets et vous le recommande vivement : réactivité, sens du détail, proactivité...Il sait s'adapter "au métier" pour lequel il intervient et pas uniquement à la fonctionnalité !

Ackeret Mano 22 février 2019

Google Avis
Nous avons fait appel à Thibaut pour développer le site internet de notre entreprise Ackeret Mano, l'année dernière et nous avons été très satisfaits.

C'est un garçon à l'écoute, disponible et sérieux.
Nous vous le recommandons les yeux fermés.

Frédéric Meyrou 19 octobre 2018

Google Avis
Thibaut a repris en main le site du projet de coopérative supercoop.fr et il a parfaitement compris le style et l'énergie qu'il fallait donner au projet donc le site est un vecteur important de communication. Vous pouvez lui faire confiance!

Patrick Chatenet 24 juin 2018

Google Avis
Nous avons travaillé avec Thibaut Soufflet pour finaliser un site Wordpress fait par une autre personne qui était partie vers d'autres horizons professionnels. Il s'est parfaitement adapté, nous a bien écouté et a proposé de très bonnes solutions en termes d'ergonomie et de facilité d'utilisation pour nos clients. A eu à régler des problèmes techniques et a pris le temps de nous trouver les meilleures solutions. Je le conseille vivement!

Anaelle Sorignet 21 mai 2018

Google Avis
Tibow est super efficace, réactif et à l'écoute ! Il nous a concocté un super site. Je recommande vivement de faire appel à lui.

ISOPROM 15 avril 2018

Google Avis
donne de tres bons conseils

Alexis Supiot 5 septembre 2017

Google Avis
Plusieurs projets avec Thibaut et à chaque fois de bons échanges, une facilité dans la compréhension de nos attentes et pour l'ensemble des résultats très satisfaisants sur le rendu. Je recommande vivement et sais que nous aurons d'autres projets ensemble.

Jenny Debaere 1 septembre 2017

Google Avis
Je tiens à mettre en avant les très bonnes compétences techniques de Thibaut, qui a réalisé un travail correspondant totalement à mes attentes.
C'est une personne très attentive et à l'écoute qui saura comprendre votre univers et transposer cela à vos projets. Un autre point fort est sans nul doute sa réactivité et son professionnalisme quant au respect des jalons demandés. Je le recommande très fortement pour vos projets de site. Je n'hésiterai pas à collaborer de nouveau avec lui.

Pierre Arbeille 20 juillet 2016

Google Avis
Thibaut a réalisé le design de mon site, et j'en suis très satisfait. Le design correspondait exactement avec ce que j'avais en tête (mais sans les talents pour le réaliser). Et le délai a été tenu, merci encore !