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

Blocs Gutenberg

Classement d’équipe en bloc pour un club sportif, sans base dédiée

Construire un bloc dynamique qui calcule un classement à partir de résultats saisis en post meta, pour un club sans budget logiciel de gestion.

Par WordPress Développement • 20 août 2022 • 4 min de lecture • Aucun commentaire
Classement d'équipe en bloc pour un club sportif, sans base dédiée

3 points pour une victoire, 1 pour un match nul, 0 pour une défaite : cette formule suffit à calculer un classement de championnat amateur, à condition de disposer d’un moyen fiable de saisir les résultats au fil des rencontres. Pour un club de handball qui gère à peine douze équipes, un logiciel de gestion sportive du commerce coûte souvent bien plus que ce que le budget associatif peut supporter, pour des fonctionnalités qui, dans les faits, resteraient à moitié utilisées.

Ce billet détaille comment répondre à ce besoin avec un type de contenu « match » simple et un bloc dynamique de calcul, sans base de données dédiée ni service de gestion sportive externe. La billetterie des matchs à domicile, gérée séparément par le club, ne fait pas partie de ce périmètre.

Un type de contenu « match », rien de plus

Chaque rencontre se saisit comme une entrée d’un type de contenu personnalisé match, avec trois champs personnalisés simples : équipe adverse, score de l’équipe du club, score de l’équipe adverse.

register_post_type( 'match', array(
    'label'        => 'Matchs',
    'public'       => true,
    'show_in_rest' => true,
    'supports'     => array( 'title' ),
) );

La formule de calcul du classement

Le club utilise un barème classique : trois points pour une victoire, un point pour un match nul, zéro pour une défaite. Le bloc dynamique parcourt l’ensemble des matchs enregistrés, additionne les points par équipe, et trie le résultat :

function calculer_classement() {
    $matchs = get_posts( array( 'post_type' => 'match', 'numberposts' => -1 ) );
    $points = array();

    foreach ( $matchs as $match ) {
        $score_club     = (int) get_post_meta( $match->ID, 'score_club', true );
        $score_adverse  = (int) get_post_meta( $match->ID, 'score_adverse', true );
        $adversaire     = get_post_meta( $match->ID, 'equipe_adverse', true );

        $points[ $adversaire ] = $points[ $adversaire ] ?? 0;
        if ( $score_club > $score_adverse ) {
            $points[ $adversaire ] += 0; // défaite de l'adversaire face au club
        }
    }
    // logique complète de comptabilisation omise pour rester lisible ici
    arsort( $points );
    return $points;
}
L'essentiel à retenir : Les résultats de chaque match sont saisis comme un type de contenu simple ; Le classement se recalcule à chaque affichage, sans tâche planifiée ; Aucune base de données ni service externe supplémentaire

Pourquoi recalculer à chaque affichage plutôt que planifier une tâche

Avec une douzaine d’équipes et une trentaine de matchs par saison, le volume de données reste suffisamment faible pour recalculer le classement à chaque affichage de la page, sans mise en cache ni tâche planifiée. Cette simplicité évite un écueil classique : un classement mis en cache qui reste affiché avec un jour de retard après la saisie d’un résultat, ce qui aurait forcément généré des messages de supporters mécontents auprès du secrétariat du club.

Le rendu affiché en tableau

<table>
    <thead>
        <tr><th>Équipe</th><th>Points</th></tr>
    </thead>
    <tbody>
        <tr><td>Club local</td><td>27</td></tr>
        <tr><td>Équipe visiteuse A</td><td>24</td></tr>
    </tbody>
</table>

Ce que le secrétariat du club a gagné

  • Une saisie de résultat en moins de deux minutes après chaque match, directement depuis un téléphone
  • Un classement toujours à jour, sans aucune intervention manuelle de recalcul
  • Aucun abonnement supplémentaire à un logiciel de gestion sportive

Les limites de cette approche

Cette solution convient parfaitement à un petit championnat amateur avec un faible volume de matchs. Un club gérant plusieurs centaines de rencontres par saison, sur de nombreuses catégories, aurait intérêt à revoir la stratégie de mise en cache pour éviter de recalculer un classement complet à chaque visite de page.

Avant de proposer un développement sur mesure à une association, on vérifie toujours le volume réel de données à traiter : un recalcul systématique, jugé trop simpliste sur un gros projet, reste parfaitement adapté à un petit club.

En résumé

Un type de contenu simple associé à un bloc dynamique de calcul répond largement au besoin d’un club sportif amateur, sans base de données ni logiciel de gestion coûteux. Cette approche reste limitée par le volume, mais parfaitement adaptée à l’échelle d’un championnat local.

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