# Masquer le montant exact des dons reçus tant qu’un objectif n’est pas atteint

> Afficher une barre de progression sans révéler le montant précis avant d'atteindre un seuil, pour une campagne de dons associative, sans toucher au module de paiement.

- Auteur : WordPress Développement
- Publié le : 2020-09-16
- Mis à jour le : 2020-09-16
- Catégorie : Astuces
- URL : https://www.wpmoderne.fr/tips/masquer-montant-dons-objectif-non-atteint/

## L’essentiel

- Un pourcentage arrondi suffit, pas besoin du montant exact
- Un simple update_option stocke le total sans dépendre du module de paiement
- La bascule d'affichage se fait avec une simple condition PHP

« Pourquoi tout le monde peut voir qu'on n'a récolté que 340 euros sur 10 000 ? » C'est la question qu'a posée la responsable de communication d'une association après le lancement de sa première campagne de dons en ligne. Le module de paiement affichait fièrement le montant exact, jour après jour, ce qui donnait une impression de campagne à l'arrêt plutôt que d'élan collectif.

La solution retenue n'a pas touché au module de paiement lui-même : elle a consisté à afficher uniquement un pourcentage de progression, arrondi à la dizaine près, tant qu'un seuil de 80 % n'était pas atteint. Passé ce seuil, le montant exact devenait visible, pour créer un effet d'urgence positive sur la dernière ligne droite.

## Stocker le total sans dépendre du module de paiement

Le module de paiement du site enregistrait déjà chaque don comme une entrée en base, mais son affichage public restait figé sur le montant brut. Plutôt que de modifier le cœur du module — au risque de perdre ces changements à la prochaine mise à jour — la solution a consisté à additionner les dons via une requête indépendante, stockée dans une option mise en cache.

```
function assoc_calculer_total_dons() {
    $total = get_transient( 'assoc_total_dons' );
    if ( false === $total ) {
        global $wpdb;
        $total = (float) $wpdb->get_var(
            "SELECT SUM(meta_value) FROM {$wpdb->postmeta}
             WHERE meta_key = 'montant_don' "
        );
        set_transient( 'assoc_total_dons', $total, 15 * MINUTE_IN_SECONDS );
    }
    return $total;
}
```

Le recours à un transient évite de recalculer la somme à chaque affichage de page, ce qui aurait pu peser sur les performances lors d'un pic de trafic pendant la campagne.

## Basculer l'affichage selon le seuil

Une fois le total disponible, la logique d'affichage compare le pourcentage atteint à l'objectif fixé pour la campagne, stocké lui aussi comme une simple option WordPress modifiable depuis un champ de réglage.

```
function assoc_afficher_progression() {
    $objectif    = (float) get_option( 'assoc_objectif_campagne', 10000 );
    $total       = assoc_calculer_total_dons();
    $pourcentage = min( 100, round( ( $total / $objectif ) * 100 ) );

    echo '<div class="progression-dons">';
    if ( $pourcentage >= 80 ) {
        echo '<p>' . number_format_i18n( $total, 0 ) . ' € collectés sur ' . number_format_i18n( $objectif, 0 ) . ' € (' . $pourcentage . ' %)</p>';
    } else {
        echo '<p>' . $pourcentage . ' % de l\'objectif atteint</p>';
    }
    echo '</div>';
}
```

> L'essentiel à retenir : Un pourcentage arrondi suffit, pas besoin du montant exact ; Un simple update_option stocke le total sans dépendre du module de paiement ; La bascule d'affichage se fait avec une simple condition PHP

## Pourquoi arrondir change la perception

Un pourcentage arrondi à la dizaine évite de donner une impression de précision comptable qui, paradoxalement, rend une petite somme plus visible qu'un pourcentage global. Passer de « 340 € sur 10 000 € » à « 10 % de l'objectif atteint » déplace l'attention du montant vers la dynamique de progression, ce qui s'est révélé plus mobilisateur pour les donateurs suivants.

- Le pourcentage reste calculé avec précision côté serveur, seul l'affichage est arrondi.
- Le seuil de 80 % est un choix arbitraire, ajustable selon la durée et la nature de la campagne.
- Cette logique reste indépendante du module de paiement, donc compatible avec une mise à jour de celui-ci sans risque de régression.

## Limites de cette approche

Ce mécanisme ne remplace pas un vrai module de campagne de financement participatif, qui gère généralement plusieurs objectifs simultanés, des paliers de récompense, ou des dons récurrents. Il convient à une campagne simple, avec un seul objectif chiffré et une seule échéance, ce qui correspondait exactement au besoin de cette association.

> Un chiffre affiché seul ne raconte jamais une histoire ; un pourcentage qui grimpe, si.

## Pour aller plus loin

La même logique de seuil d'affichage peut s'appliquer à d'autres contextes : masquer un nombre d'inscrits tant qu'un événement n'est pas complet, ou révéler un compteur de votes seulement après la clôture d'un scrutin. Le principe reste identique : calculer la donnée réelle en continu, mais choisir soigneusement à quel moment et sous quelle forme elle devient visible au public, en fonction de l'effet recherché plutôt que par simple habitude d'afficher tout ce qui est disponible.
