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

Thèmes

Une liste d’attente affichée en thème classique, pour une mutuelle

Afficher un compteur de personnes en liste d'attente pour une offre limitée, dans un thème classique, sans jamais exposer l'adresse email collectée.

Par WordPress Développement • 26 mars 2023 • 4 min de lecture • Aucun commentaire
Une liste d'attente affichée en thème classique, pour une mutuelle

Combien de personnes attendent déjà avant moi ? C’est la question que pose tout visiteur face à une liste d’attente affichant un compteur, et c’est précisément ce qu’une mutuelle voulait afficher sur une offre à places limitées, sans jamais exposer la moindre adresse email ou nom des personnes déjà inscrites.

La contrainte de confidentialité était non négociable pour ce client du secteur mutualiste : le compteur devait rester public, mais aucune donnée nominative ne devait transiter côté navigateur. Voici comment ce dispositif a été construit dans un thème classique.

Le principe : compter sans exposer

Chaque inscription à la liste d’attente est enregistrée comme un type de contenu inscription_attente, non public, avec l’adresse email stockée en métadonnée chiffrée côté serveur. Le compteur affiché publiquement ne fait jamais référence à ces enregistrements individuels : il s’agit d’une simple valeur numérique, calculée et mise en cache côté serveur.

register_post_type( 'inscription_attente', array(
    'public'              => false,
    'show_ui'             => true,
    'show_in_admin_bar'   => false,
    'exclude_from_search' => true,
) );
L'essentiel à retenir : Compteur public sans exposer aucune donnée personnelle ; Comptage fait côté serveur à chaque inscription ; Cache de la valeur affichée pour limiter les requêtes répétées

Le comptage côté serveur, à chaque inscription

Plutôt que de recompter l’ensemble des enregistrements à chaque affichage de page (ce qui deviendrait coûteux avec le trafic), le nombre d’inscrits est incrémenté au moment même de l’enregistrement d’une nouvelle inscription, et stocké dans une simple option WordPress.

add_action( 'save_post_inscription_attente', function ( $post_id, $post, $creation ) {
    if ( ! $creation ) {
        return;
    }

    $compteur_actuel = (int) get_option( 'compteur_liste_attente', 0 );
    update_option( 'compteur_liste_attente', $compteur_actuel + 1 );
}, 10, 3 );

Cette approche évite toute requête de comptage complexe sur le type de contenu à chaque affichage de la page publique : la valeur est déjà calculée et stockée, prête à être lue.

L’affichage public, strictement numérique

Le template affiche uniquement la valeur de l’option, sans jamais interroger directement les enregistrements individuels depuis une page accessible publiquement. Aucune route, aucun point de terminaison de l’API REST n’expose la liste des inscrits : seule l’administration du site y a accès, via l’écran classique du type de contenu.

<p>
    <?php echo (int) get_option( 'compteur_liste_attente', 0 ); ?> personnes sont déjà inscrites sur liste d'attente.
</p>

Fermer l’API REST par précaution

Même si le type de contenu est déclaré non public, une vérification supplémentaire s’impose : s’assurer qu’aucune route REST n’est générée pour ce type de contenu, en laissant explicitement show_in_rest à sa valeur par défaut (absente), et en vérifiant qu’aucune extension installée par ailleurs ne force l’exposition de tous les types de contenu personnalisés.

  • Ne jamais définir show_in_rest à true sur un type de contenu qui stocke des données sensibles.
  • Vérifier régulièrement la route /wp-json/wp/v2/types pour confirmer l’absence du type de contenu dans la liste exposée.
  • Restreindre les capacités d’accès au type de contenu aux seuls rôles qui en ont réellement besoin.

Pourquoi ne pas simplement afficher le nombre réel avec une marge

Une tentation classique consiste à afficher un nombre légèrement gonflé pour donner une impression d’urgence commerciale. Ce choix n’a pas été retenu ici : la mutuelle souhaitait un affichage strictement fidèle à la réalité, considérant que la confiance de ses adhérents primait sur l’effet d’urgence marketing. Le compteur reflète donc exactement le nombre d’inscriptions enregistrées, ni plus ni moins.

Un compteur public doit rester une donnée agrégée et rien d’autre : dès qu’un visiteur peut, même indirectement, déduire une information sur une personne précise de la liste, le dispositif a échoué sur le plan de la confidentialité.

En résumé

Afficher un compteur de liste d’attente sans exposer de donnée personnelle repose sur une séparation stricte entre les enregistrements individuels, jamais accessibles publiquement, et une valeur agrégée calculée à l’enregistrement. Pour une mutuelle soumise à des exigences de confidentialité élevées, cette architecture simple a permis de répondre au besoin commercial sans jamais transiger sur la protection des données de ses futurs adhérents.

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