# Programmer le rappel d’adhésion annuel d’un club sportif

> Un club amateur perdait des adhérents faute de relance avant l'échéance annuelle. Un e-mail programmé un mois avant la date anniversaire de l'adhésion referme cette fuite sans outil de gestion associative complet.

- Auteur : WordPress Développement
- Publié le : 2021-11-24
- Mis à jour le : 2026-09-30
- Catégorie : Astuces
- URL : https://www.wpmoderne.fr/tips/rappel-adhesion-annuelle-club-sportif/

## L’essentiel

- Date de rappel calculée depuis la date d'adhésion initiale, pas depuis une date fixe
- Un événement programmé par adhérent, pas de tâche récurrente globale
- Message personnalisé avec le nombre d'années d'adhésion déjà écoulées

« On a perdu douze adhérents l'an dernier, simplement parce que personne n'a pensé à leur redemander leur cotisation » : ce constat, formulé par le trésorier bénévole d'un club sportif amateur, résume un problème que je retrouve dans beaucoup d'associations gérées sans outil de gestion dédié. Les adhésions étaient enregistrées comme un type de contenu personnalisé sur le site du club, chacune avec sa propre date d'adhésion initiale, mais rien ne relançait automatiquement l'adhérent avant l'échéance annuelle.

La solution retenue s'appuie sur `wp_schedule_single_event`, programmé individuellement pour chaque adhérent, un mois avant sa date anniversaire d'adhésion. Contrairement à une tâche récurrente qui vérifierait chaque jour l'ensemble des adhésions, chaque adhérent porte son propre événement programmé, ce qui simplifie considérablement le raisonnement sur les dates.

## Calculer la date anniversaire et programmer le rappel

À la création de l'adhésion, ou à son renouvellement, on calcule la prochaine échéance annuelle à partir de la date d'adhésion initiale, puis on programme l'événement de rappel un mois avant cette échéance.

```
add_action( 'save_post_adhesion', function ( $post_id ) {
    if ( wp_is_post_revision( $post_id ) ) {
        return;
    }

    $date_adhesion = get_post_meta( $post_id, 'date_adhesion', true );
    if ( ! $date_adhesion ) {
        return;
    }

    $annee_courante = (int) date( 'Y' );
    $prochaine_echeance = strtotime( $annee_courante . '-' . date( 'm-d', strtotime( $date_adhesion ) ) );

    if ( $prochaine_echeance < time() ) {
        $prochaine_echeance = strtotime( '+1 year', $prochaine_echeance );
    }

    $date_rappel = strtotime( '-1 month', $prochaine_echeance );

    wp_clear_scheduled_hook( 'ch_rappel_adhesion', array( $post_id ) );
    if ( $date_rappel > time() ) {
        wp_schedule_single_event( $date_rappel, 'ch_rappel_adhesion', array( $post_id ) );
    }
} );
```

> L'essentiel à retenir : Date de rappel calculée depuis la date d'adhésion initiale, pas depuis une date fixe ; Un événement programmé par adhérent, pas de tâche récurrente globale ; Message personnalisé avec le nombre d'années d'adhésion déjà écoulées

## Envoyer un message personnalisé avec l'ancienneté de l'adhérent

Le message de rappel ne se contente pas d'annoncer une échéance : il rappelle le nombre d'années d'adhésion déjà écoulées, une information qui, selon le trésorier du club, a un effet positif sur le taux de renouvellement, en valorisant la fidélité de l'adhérent plutôt que de se limiter à une simple demande de paiement.

```
add_action( 'ch_rappel_adhesion', function ( $post_id ) {
    $email = get_post_meta( $post_id, 'email_adherent', true );
    $date_adhesion = get_post_meta( $post_id, 'date_adhesion', true );

    if ( ! is_email( $email ) ) {
        return;
    }

    $annees = (int) date( 'Y' ) - (int) date( 'Y', strtotime( $date_adhesion ) );

    $sujet = 'Votre adhésion arrive à échéance dans un mois';
    $corps = sprintf(
        "Bonjour,\n\nCela fait %d an(s) que vous nous accompagnez, merci de votre fidélité.\nVotre adhésion arrive à échéance dans un mois : pensez à la renouveler pour continuer la saison avec nous.\n\nSportivement.",
        max( $annees, 1 )
    );

    wp_mail( $email, $sujet, $corps );
} );
```

## Reprogrammer automatiquement l'année suivante

Une fois le renouvellement effectué, un nouvel événement doit être programmé pour l'année suivante, sans attendre une nouvelle modification manuelle de la fiche d'adhésion. Ce recalcul se fait au moment où le statut de paiement passe à jour, indépendamment de toute autre modification de la fiche.

```
add_action( 'ch_adhesion_renouvelee', function ( $post_id ) {
    update_post_meta( $post_id, 'date_adhesion', current_time( 'Y-m-d' ) );
    do_action( 'save_post_adhesion', $post_id ); // Reprogramme le rappel pour l'année suivante.
} );
```

## Ce que le club a observé après une saison complète

Après une saison complète avec ce dispositif en place, plusieurs constats ont émergé, partagés lors d'une assemblée générale du club :

- La majorité des renouvellements arrivaient dans les deux semaines suivant l'envoi du rappel, plutôt que de façon éparpillée sur l'ensemble de l'année comme auparavant.
- Quelques adhérents ont répondu directement à l'e-mail pour signaler un changement d'adresse électronique, une occasion inattendue de mettre à jour leurs coordonnées.
- Le nombre d'adhésions non renouvelées faute de rappel a nettement diminué par rapport à la saison précédente, un chiffre suivi manuellement par le trésorier dans son propre tableau de suivi.

> Un rappel qui arrive au bon moment ne remplace pas l'engagement de l'adhérent, mais il évite qu'un simple oubli ne se transforme en départ silencieux du club.

## Notre verdict

Ce dispositif ne traite volontairement pas le paiement en ligne de la cotisation, qui reste géré séparément par virement ou chèque selon les habitudes du club : l'automatisation couvre uniquement la relance, laissant le mode de paiement inchangé. Pour une association sans budget de développement conséquent, ce niveau d'automatisation reste largement accessible avec les seules fonctions natives de WordPress.
