Comment prouver, six mois après coup, qu’un adhérent a bien coché la case de consentement avant d’envoyer son formulaire ? C’est la question posée par la trésorière d’une association loi 1901 qui venait de migrer son site vers un thème bloc, et qui tenait jusque-là son registre de consentement sur un tableur mis à jour à la main.
Ce billet propose un snippet léger de journalisation des consentements, branché sur les template parts de formulaire du site de l’association, sans installer de plugin RGPD généraliste disproportionné pour une structure de cette taille. Les obligations légales complètes du RGPD et les problématiques de gros volumes de données ne sont pas abordées ici : ce n’est ni le périmètre de l’association, ni celui de ce billet.
Le contexte : peu de données, mais une obligation de traçabilité
Le site de l’association collecte trois informations via son formulaire d’adhésion : nom, adresse courriel et une case à cocher de consentement pour l’envoi de la lettre d’information. Le volume est faible — une centaine d’adhésions par an — mais le bureau de l’association doit pouvoir présenter, en cas de contrôle ou de demande d’un adhérent, la preuve que le consentement a bien été recueilli à une date donnée.
Un plugin RGPD généraliste aurait apporté des fonctionnalités inutiles pour ce cas précis : gestion de cookies tiers, bannières multiples, intégrations publicitaires. Le choix s’est porté sur une table dédiée, créée par migration, et un template part de formulaire modifié pour y écrire une ligne à chaque soumission.
Créer la table de journalisation
La table est créée à l’activation du thème enfant, via dbDelta(), avec un identifiant de template part d’origine pour savoir quel formulaire a généré chaque entrée si le site venait à en accueillir plusieurs.

function wpm_create_consent_log_table() {
global $wpdb;
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
$table = $wpdb->prefix . 'wpm_consent_log';
$charset = $wpdb->get_charset_collate();
$sql = "CREATE TABLE {$table} (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
template_part VARCHAR(100) NOT NULL,
email VARCHAR(190) NOT NULL,
consent_text TEXT NOT NULL,
submitted_at DATETIME NOT NULL,
PRIMARY KEY (id)
) {$charset};";
dbDelta( $sql );
}
add_action( 'after_switch_theme', 'wpm_create_consent_log_table' );
Journaliser au moment de la soumission
Le template part parts/form-adhesion.html intègre un formulaire natif traité par une action WordPress dédiée. Au moment du traitement, le texte exact de la case de consentement affichée est enregistré en même temps que la soumission, et non un simple booléen : en cas de modification ultérieure du texte de la case, la preuve reste fidèle à ce que l’adhérent a réellement lu.
- L’enregistrement se fait via
wpdb::insert(), avec l’adresse courriel, le texte de consentement affiché et un horodatagecurrent_time( 'mysql' ). - Aucune donnée n’est envoyée à un service tiers : le traitement reste local à la base de données du site, cohérent avec le principe de minimisation.
- Une purge annuelle automatique, via
wp_cron, supprime les entrées de plus de trois ans, durée fixée par le bureau de l’association en cohérence avec sa politique de conservation.
Restituer le registre au bureau
Le bureau de l’association n’a pas de compétences techniques et a besoin d’un export simple. Un écran d’administration minimal, ajouté via add_submenu_page(), affiche les entrées sous forme de tableau avec un bouton d’export CSV généré par fputcsv() dans un flux de sortie direct.
Ce que contient l’export
Chaque ligne du CSV correspond à une adhésion : date, courriel, texte de consentement. Ce fichier constitue la pièce que le bureau peut joindre à son registre de traitement au sens de l’article 30 du RGPD, sans prétendre à lui seul couvrir l’ensemble des obligations documentaires de l’association.
Pour une petite structure, la meilleure conformité RGPD est souvent la plus simple à expliquer à un bénévole qui prendra la relève dans deux ans.
Pour aller plus loin
Ce dispositif reste volontairement minimal et ne couvre qu’un formulaire d’adhésion à faible volume. Pour une association qui grandirait ou multiplierait les formulaires de collecte, une revue par un délégué à la protection des données resterait la démarche recommandée, ce snippet n’ayant pas vocation à s’y substituer. Il a néanmoins permis de transformer un tableur bricolé en un registre fiable, consultable en quelques clics par le bureau.