Le WordPress d'aujourd'hui, décodé pour les développeurs

Thèmes

Thème pour club sportif : un agenda de tournois en champs personnalisés

Sans budget pour un logiciel de gestion sportive, un club peut afficher son calendrier de tournois à partir de simples champs personnalisés bien structurés.

Par WordPress Développement • 2 novembre 2021 • 4 min de lecture • Aucun commentaire
Thème pour club sportif : un agenda de tournois en champs personnalisés

Un club sportif amateur pose souvent la même question à son développeur bénévole ou prestataire : comment afficher un calendrier de tournois à venir, sans repartir sur un logiciel de gestion sportive coûteux et surdimensionné pour ses besoins réels ? La réponse tient dans un custom post type bien pensé, appuyé sur des champs personnalisés simples.

Ce club, une association qui organise une dizaine de tournois par an, n’a pas besoin d’un système de classement en direct, d’inscriptions en ligne ni de gestion de brackets. Il a besoin d’afficher, sur son site vitrine, une liste claire des prochains rendez-vous, avec leur date, leur lieu et une brève description, triée dans l’ordre chronologique.

Le custom post type « tournoi »

Chaque tournoi devient un article d’un type de contenu dédié, avec un titre, une description dans l’éditeur, et des champs personnalisés pour la date, l’heure et le lieu. Ce choix évite de mélanger les tournois avec les articles d’actualité du club, tout en profitant du même système d’administration familier pour les bénévoles qui gèrent le site.

function club_cpt_tournoi() {
    register_post_type( 'tournoi', array(
        'labels'      => array( 'name' => 'Tournois' ),
        'public'      => true,
        'has_archive' => true,
        'supports'    => array( 'title', 'editor' ),
        'menu_icon'   => 'dashicons-awards',
        'rewrite'     => array( 'slug' => 'tournois' ),
    ) );
}
add_action( 'init', 'club_cpt_tournoi' );

Choisir le bon format de champ pour la date

La date du tournoi est enregistrée dans un champ personnalisé au format YYYY-MM-DD, un choix qui n’a rien d’anecdotique : ce format se trie naturellement en ordre alphabétique, ce qui correspond exactement à l’ordre chronologique attendu. Un format de date localisé (jour/mois/année) rendrait le tri bien plus complexe côté requête, sans bénéfice réel puisque l’affichage final peut de toute façon être reformaté au moment du rendu, indépendamment du format de stockage.

L'essentiel à retenir : Un CPT « tournoi » suffit à décrire une compétition sans logiciel dédié ; Le tri chronologique se fait par une simple meta_query sur la date ; Les tournois passés et à venir demandent deux requêtes distinctes

Cette distinction entre format de stockage et format d’affichage est un principe qui dépasse largement ce projet : stocker une donnée dans un format facilement manipulable par le code, puis la reformater uniquement au moment de l’affichage avec une fonction comme date_i18n(), évite bien des complications ultérieures.

Interroger et trier les tournois à venir

L’affichage des prochains tournois repose sur une requête WP_Query filtrée par une meta_query sur la date, comparée à la date du jour, puis triée par ordre croissant :

$tournois_a_venir = new WP_Query( array(
    'post_type'      => 'tournoi',
    'posts_per_page' => -1,
    'meta_key'       => 'date_tournoi',
    'orderby'        => 'meta_value',
    'order'          => 'ASC',
    'meta_query'     => array(
        array(
            'key'     => 'date_tournoi',
            'value'   => date( 'Y-m-d' ),
            'compare' => '>=',
            'type'    => 'DATE',
        ),
    ),
) );

Le paramètre 'type' => 'DATE' indique à WordPress de comparer les valeurs comme des dates plutôt que comme de simples chaînes de caractères, ce qui garantit une comparaison correcte même si le format de stockage venait à évoluer.

Séparer tournois passés et tournois à venir

Le club souhaite également conserver un historique des tournois passés, affiché séparément sur une page d’archives. Une seconde requête, quasiment identique à la première mais avec l’opérateur de comparaison inversé et un tri décroissant, couvre ce besoin :

  • Requête « à venir » : comparaison >= à la date du jour, tri croissant
  • Requête « passés » : comparaison < à la date du jour, tri décroissant
  • Les deux requêtes partagent la même structure de champ, seule la logique de filtre change
  • Aucune duplication de contenu : chaque tournoi n’existe qu’à un seul endroit dans la base

Afficher le lieu et les informations pratiques

Le template de la boucle affiche, pour chaque tournoi, sa date reformatée en français avec date_i18n(), son lieu, et un court extrait de la description. Un lien vers la fiche complète du tournoi permet d’ajouter des informations plus détaillées (règlement, catégories d’âge concernées) sans surcharger la vue d’ensemble de l’agenda.

Sur ce genre de projet associatif, la meilleure décision technique reste souvent la plus modeste : un champ de date bien choisi et deux requêtes simples couvrent l’essentiel des besoins, sans justifier l’installation d’un plugin d’événements généraliste dont le club n’utiliserait qu’une fraction des fonctionnalités.

En résumé

Un agenda de tournois construit à partir d’un custom post type et de champs personnalisés bien structurés répond entièrement aux besoins d’un club sportif sans budget de développement logiciel dédié. Le choix du format de stockage de la date, souvent négligé, conditionne directement la simplicité des requêtes de tri qui alimentent l’ensemble de l’agenda, passé comme à venir.

Laisser un commentaire

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

Partager :

À propos de l'auteur

WordPress Développement

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi