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

Astuces

Réserver le badge « club affilié » aux clubs sportifs à jour de cotisation

Un annuaire de clubs sportifs affichait un badge d'affiliation identique pour tous les clubs listés. Voici comment ne le réserver qu'aux clubs réellement à jour de cotisation, sans paiement en ligne à intégrer.

Par WordPress Développement • 12 mai 2023 • 4 min de lecture • Aucun commentaire
Réserver le badge « club affilié » aux clubs sportifs à jour de cotisation

Un badge d’affiliation affiché uniformément sur tous les clubs d’un annuaire, qu’ils soient à jour de cotisation ou non, finit par perdre toute signification aux yeux des visiteurs comme des clubs eux-mêmes. Une fédération qui gère son annuaire de clubs sous WordPress a tout intérêt à conditionner ce badge à un statut réel plutôt qu’à la simple présence de la fiche.

Le paiement de la cotisation lui-même peut continuer à transiter par virement bancaire ou chèque, sans passer par un module de paiement en ligne intégré au site. Ce qui compte pour l’affichage du badge, c’est que le statut soit enregistré quelque part de façon fiable et vérifiable, indépendamment du canal de paiement utilisé.

Structurer le statut de cotisation

Sur un type de contenu club_sportif, deux champs suffisent : date_derniere_cotisation, mise à jour manuellement par le secrétariat de la fédération à réception du paiement, et une durée de validité fixe, généralement douze mois, définie une fois pour toutes dans le code plutôt que ressaisie club par club.

Calculer le statut plutôt que le stocker

Stocker un champ booléen a_jour_cotisation mis à jour manuellement finit toujours par se déphaser de la réalité : personne ne pense à le repasser à faux le jour où la cotisation expire. Mieux vaut calculer ce statut à chaque affichage, à partir de la seule date fiable :

L'essentiel à retenir : Le badge dépend d'un champ de statut de cotisation, jamais du simple fait d'être listé ; Une date d'échéance calculée évite tout oubli de mise à jour ; Aucun module de paiement en ligne n'est requis pour ce badge
function wpm_club_a_jour_cotisation( $post_id ) {
    $derniere_cotisation = get_post_meta( $post_id, 'date_derniere_cotisation', true );

    if ( ! $derniere_cotisation ) {
        return false;
    }

    $expiration = new DateTime( $derniere_cotisation );
    $expiration->modify( '+12 months' );

    return $expiration->getTimestamp() > current_time( 'timestamp' );
}

Afficher le badge conditionnellement

if ( wpm_club_a_jour_cotisation( get_the_ID() ) ) {
    echo '<span class="badge-club-affilie">Club affilié à jour</span>';
}

Aucun message négatif n’est nécessaire dans le cas contraire : l’absence de badge suffit à ne pas mettre en avant un club dont la cotisation n’a pas été renouvelée, sans pour autant afficher publiquement une information qui pourrait être perçue comme négative envers le club concerné.

Alerter le secrétariat avant expiration

Pour éviter les oublis de renouvellement côté clubs, une tâche planifiée quotidienne peut avertir le secrétariat de la fédération des cotisations proches de l’échéance, afin qu’un rappel humain soit envoyé au club concerné :

add_action( 'wpm_verifier_cotisations_clubs', 'wpm_lister_cotisations_proches_echeance' );

function wpm_lister_cotisations_proches_echeance() {
    $clubs = get_posts( array(
        'post_type'      => 'club_sportif',
        'posts_per_page' => -1,
    ) );

    $clubs_a_relancer = array();

    foreach ( $clubs as $club ) {
        $derniere_cotisation = get_post_meta( $club->ID, 'date_derniere_cotisation', true );

        if ( ! $derniere_cotisation ) {
            continue;
        }

        $expiration     = new DateTime( $derniere_cotisation );
        $expiration->modify( '+12 months' );
        $jours_restants = (int) ( ( $expiration->getTimestamp() - current_time( 'timestamp' ) ) / DAY_IN_SECONDS );

        if ( $jours_restants >= 0 && $jours_restants <= 15 ) {
            $clubs_a_relancer[] = $club->post_title;
        }
    }

    if ( ! empty( $clubs_a_relancer ) ) {
        wp_mail(
            get_option( 'admin_email' ),
            'Cotisations proches de l\'échéance',
            implode( ', ', $clubs_a_relancer )
        );
    }
}

Filtrer l’annuaire par statut

Sur la page qui liste l’ensemble des clubs, un filtre permettant de n’afficher que les clubs à jour valorise davantage le badge et incite les autres clubs à régulariser leur situation :

  • Un lien « Voir uniquement les clubs affiliés à jour » au-dessus de la liste.
  • Une boucle qui applique wpm_club_a_jour_cotisation() à chaque club avant de l’inclure dans l’affichage filtré.
  • Aucune modification de la requête principale n’est nécessaire, le filtrage se fait au moment de l’affichage.

Conseil maison : ne stockez jamais un statut calculable comme une simple valeur figée. Calculez-le à chaque affichage depuis la donnée source, ici la date de cotisation, pour ne jamais avoir à vous soucier d’une resynchronisation manuelle.

En résumé

Un badge d’affiliation n’a de valeur que s’il reflète une réalité vérifiée. En calculant le statut de cotisation à partir d’une seule date fiable plutôt qu’en le stockant comme une case à cocher, la fédération garantit que le badge reste toujours cohérent avec la situation réelle de chaque club, sans dépendre d’un paiement en ligne intégré au site.

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