L'un des atouts majeurs de WordPress réside dans sa flexibilité exceptionnelle. Au-delà des articles de blog et des pages statiques, les types de publication personnalisés (Custom Post Types ou CPT) permettent d'étendre les fonctionnalités pour adapter votre site à n'importe quel besoin.
Découvrons aujourd'hui les possibilités offertes par les CPT, avec un exemple concret : la création d'une liste d'événements via un type de publication dédié nommé Événement.
Note importante : Ce tutoriel est à des fins éducatives uniquement, pour vous initier au code des CPT. Pour une solution professionnelle et gratuite, optez pour le plugin The Events Calendar, robuste et largement adopté.
Un site WordPress classique repose sur deux types de contenu principaux : les articles de blog (datés et chronologiques) et les pages statiques (comme « À propos » ou « Contact »).
Que faire si vous avez besoin d'un contenu spécifique qui ne s'intègre ni dans la chronologie du blog ni dans les pages statiques ? Les CPT entrent en jeu pour créer des sections dédiées.
Pour un site de club ou d'association, un calendrier d'événements est une demande fréquente. Utiliser une simple catégorie « Événements » mélange les flux ; un CPT « Événement » offre une section admin et un affichage indépendants.
Nous modifions directement le fichier functions.php de votre thème (dans wp-content/themes/votre-thème). Pour une approche sans risque, utilisez le plugin My Custom Functions via Paramètres > Inséreur PHP.
Ajoutez ce code avant la balise de fermeture ?> (s'il y en a une) :
add_action('init', 'events_init');
function events_init() {
$args = array(
'labels' => array(
'name' => __('Événements'),
'singular_name' => __('Événement'),
),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'events'),
'supports' => array('thumbnail', 'editor', 'title', 'custom-fields')
);
register_post_type('events', $args);
}Ce code définit les étiquettes admin, la visibilité publique, l'archive (/events/), les URLs et les fonctionnalités supportées (vignettes, éditeur, titre, champs personnalisés).
Enregistrez, rechargez votre site : une nouvelle section « Événements » apparaît dans l'admin. Créez quelques événements tests.


Ajoutez un champ personnalisé date (format jj/mm/aaaa) pour la date réelle de l'événement, distincte de la date de publication.

Après création, régénérez les permaliens (Paramètres > Permaliens > Enregistrer) pour éviter les erreurs 404. L'URL sera /events/nom-evenement/.
Visitez /events/ pour voir l'archive par défaut. Pour la personnaliser (ex. avec Twenty Seventeen), copiez archive.php en archive-events.php dans votre thème (utilisez un thème enfant pour les mises à jour).
Dans archive-events.php, remplacez le bloc get_template_part('template-parts/post/content', get_post_format()); par ce code simplifié :
<article>
<header class="entry-header">
<?php echo '<div class="entry-meta">' . twentyseventeen_time_link() . '</div>'; ?>
<?php the_title('<h2 class="entry-title"><a href="' . esc_url(get_permalink()) . '" rel="bookmark">', '</a></h2>'); ?>
</header>
<?php if ('' !== get_the_post_thumbnail() && !is_single()) : ?>
<div class="post-thumbnail">
<a href="<?php the_permalink(); ?>">
<?php the_post_thumbnail('twentyseventeen-featured-image'); ?>
</a>
</div>
<?php endif; ?>
<div class="entry-content">
<?php the_content(sprintf(
wp_kses(__('Continuer la lecture <span class="screen-reader-text"> "%s"</span>', 'twentyseventeen'), array('span' => array('class' => array()))),
get_the_title()
)); ?>
</div>
</article>Pour afficher la vraie date d'événement, remplacez twentyseventeen_time_link() par :
<?php echo date('l j F Y', strtotime(get_post_meta(get_the_ID(), 'date', true))); ?>
Prochaines étapes : Activez les images à la une avec notre guide des vignettes. Pour un hébergement optimal, choisissez WP Engine ou InMotion Hosting (lien promo).
[]