Transformez WordPress en vrai CMS avec les « Custom Post Type »

Partagez si vous aimez ->

Pour transformer WordPress en CMS, utilisez la fonctionnalité des « Custom Post Types », ou « Modèles personnalisés de contenu »: je vous apprends à quoi elle sert et comment vous en servir.

WordPress n’est pas un système de gestion de contenu (CMS) classique: c’est un moteur de blog. Quelle est la différence entre les deux ?

C’est très simple.

Un CMS permet de gérer n’importe quel type de contenu tandis qu’un moteur de blog ne permet de gérer que les types de contenus propres à un blog: c’est-à-dire les pages et les articles. Vous vous demandez peut-être ce qu’un site pourrait bien avoir de plus que des pages ou des articles ?

Je vais vous donner quelques exemples :

  • Un forum aura besoin de gérer des sujets (topics)
  • Un site de petites annonces gèrera des annonces!
  • Un site de rencontre ou un réseau social, gèrera des profils de personnes et des messages.
  • Un annuaire gèrera des sites web.
  • Un site de streaming gèrera des vidéos et des chaînes
  • etc…

Comme vous le voyez, tous ces contenus sont différents: un message regroupe par exemple un « intitulé », un « corps », un « destinataire » et un « expéditeur ». Tandis qu’une petite annonce aura un « intitulé », un « corps », un « prix » et un « numéro de téléphone de contact ».

La structure en base de données n’est donc pas la même pour stocker les informations d’un type de contenu ou d’un autre.

Mais…créer un forum avec WordPress est pourtant possible!

Heureusement ! Grâce aux plugins, de nouvelles fonctionnalités peuvent être ajoutées à WordPress, ce qui rend ce moteur de blog aussi puissant qu’un CMS classique (comme Joomla), tout en lui conservant sa grande simplicité d’utilisation. Le meilleur des deux mondes !

Pourquoi ajouter un nouveau type de contenu dans WordPress ?

Pour vous donner un exemple concret, je vais reprendre le cas que j’ai rencontré en développant le site de la cave à bières « La Cane Bière ».

Pour les besoins de ce site, je devais créer une carte des bières.

custom post type

Chaque bière a un « nom », peut-être triée par son « pays d’origine » et classée selon son « type de bière » (blonde, brune…).

Cette structure ressemble à celle des articles: les articles possèdent en effet un « titre », ils peuvent être triés par « mot-clef » et classés dans des « catégories ».

Ce site possédant déjà un blog, je ne pouvais détourner le système des articles pour y rentrer mes bières… Ni une, ni deux, j’ai su qu’il me faudrait créer un type de contenu « bière » calqué sur le type « article ».

Ca tombe bien, c’est exactement ce que propose les « Customs Post Types » (ou « Modèles personnalisés de contenu »).

Comment créer un nouveau type de contenu avec les « Customs Post Types »

Le code est assez long et peut paraître impressionnant: mais rassurez-vous, il n’est pas difficile à utiliser. Je vous ai écris des commentaires pour vous y aider.

Tout d’abord, je vais créer le nouveau type « bière », calqué sur « article ».

Placez ce code dans le fichier functions.php de votre thème.
/* on utilise le hook "init" (en particulier dans un thème enfant) */
add_action('init', 'my_custom_init');
function my_custom_init()
{
/* ici je créé un tableau avec tous les labels qui apparaîtront en back-office */
$labels_beer = array(
'name' => 'Nos Bières',
'singular_name' => 'Bière',
'all_items' => 'Toutes les bières',
'add_new' => 'Ajouter une bière',
'add_new_item' => 'Ajouter une nouvelle bière',
'edit_item' => 'Editer une bière',
'new_item' => 'Nouvelle bière',
'view_item' => 'Voir la bière',
'search_items' => 'Rechercher une bière',
'not_found' => 'Aucune bière',
'not_found_in_trash' => 'Aucune bière dans la corbeille',
'menu_name' => 'Nos Bières'
);

/* Puis je créé le type "bière" */
register_post_type(
'nos-bieres', /* slug */
array(
'label' => __('Bières'),
'labels' => $labels_beer,
'public' => true,
'show_ui' => true,
'capability_type' => 'post', /* indique si on se claque sur le modèle "Article" (post) ou "Page" (page) */
'has_archive' => 'nos-bieres', /* slug pour les pages d'archives */
'hierarchical' => false, /* Affiche la liste déroulante "Parent" (uniquement pour les types calqués sur le modèle "Page") */
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields')
));
}

Ensuite je vais créer la taxonomie: les « pays » calqués sur les « mots-clefs » (c’est à dire, une taxonomie non-hiérarchique).

register_taxonomy( 'pays', 'nos-bieres', array(
'hierarchical' => false, /* On se calque sur une taxonomie non-hiérarchique comme les mots-clefs */
'labels' => array(
'name' => __( 'Pays'),
'singular_name' => __( 'Pays'),
'search_items' => __( 'Rechercher un Pays' ),
'popular_items' => __( 'Les plus utilisés' ),
'all_items' => __( 'Tous les Pays' ),
'parent_item' => null,
'parent_item_colon' => null,
'edit_item' => __( 'Editer un Pays' ),
'update_item' => __( 'Modifier un Pays' ),
'add_new_item' => __( 'Ajouter un Pays' ),
'new_item_name' => __( 'Nouveau nom de Pays' ),
'separate_items_with_commas' => __( 'UN SEUL pays par bière' ),
'add_or_remove_items' => __( 'Ajouter ou enlever un pays' ),
'choose_from_most_used' => __( 'Choisir parmi les pays les plus utilisés' ),
'menu_name' => __( 'Pays' )
),
'show_ui' => true,
'update_count_callback' => '_update_post_term_count',
'query_var' => true,
'rewrite' => array(
'slug' => 'pays', /* Le slug */
'with_front' => false
)
) );

Et enfin, les « types de bières » calqués sur les « catégories » (c’est à dire, une taxonomie hiérarchique).

register_taxonomy('type', 'nos-bieres', array(
'hierarchical' => true, /* On se calque sur une taxonomie hiérarchique comme les catégories */
'labels' => array(
'name' => __( 'Types'),
'singular_name' => __( 'Type'),
'search_items' => __( 'Rechercher un Type' ),
'all_items' => __( 'Tous les Type' ),
'parent_item' => __( 'Type Parent' ),
'parent_item_colon' => __( 'Type Genre:' ),
'edit_item' => __( 'Editer un Type' ),
'update_item' => __( 'Modifier un Type' ),
'add_new_item' => __( 'Ajouter un Type' ),
'new_item_name' => __( 'Nouveau nom de Type' ),
'menu_name' => __( 'Type' ),
),
'show_ui' => true,
'query_var' => true,
'rewrite' => array(
'slug' => 'type-de-bieres', /* Le slug */
'with_front' => false
)
));

Le résultat final dans l’interface d’administration

custom post type

 

Partagez si vous aimez ->

Youcef

Concepteur de Sites Web et entrepreneur, l'écriture et la pédagogie font aussi partie de mes passions. Mon objectif est de vous aider à trouver la solution idéale pour créer votre propre Site Internet.

Vous aimerez aussi...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Simple Share Buttons