# FSE pour association loi 1901 : un registre RGPD des templates de collecte

> Un snippet de journalisation des consentements associé aux template parts de formulaire, pensé pour une petite association et son site en éditeur de site.

- Auteur : WordPress Développement
- Publié le : 2023-02-14
- Mis à jour le : 2023-02-14
- Catégorie : Éditeur de site (FSE)
- URL : https://www.wpmoderne.fr/fse/registre-rgpd-formulaires-association-fse/

## L’essentiel

- Journal de consentement horodaté par template part
- Table dédiée plutôt qu'un plugin RGPD généraliste
- Export CSV pour le registre de traitement du bureau

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.

> L'essentiel à retenir : Journal de consentement horodaté par template part ; Table dédiée plutôt qu'un plugin RGPD généraliste ; Export CSV pour le registre de traitement du bureau

```
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 horodatage `current_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.
