L’outil existe déjà dans le cœur de WordPress depuis la version 4.9.6 : le menu Outils > Exporter les données personnelles génère, pour n’importe quel utilisateur identifié par son adresse e-mail, un fichier JSON ou HTML contenant l’ensemble de ses données personnelles enregistrées sur le site. Sur une plateforme e-learning, ce constat change la donne : plutôt que de développer un export sur mesure pour répondre aux demandes RGPD des apprenants, il suffit de connecter les données spécifiques du LMS à cet outil natif et de rendre son déclenchement accessible directement depuis l’espace personnel.
La checklist qui suit couvre l’ensemble du chemin : de la vérification que les exporteurs natifs suffisent, à l’ajout d’un exporteur personnalisé pour les données de progression pédagogique, jusqu’à l’exposition d’un lien simple côté front, sans jamais recoder ce que le cœur fournit déjà.
Vérifier ce que l’outil natif exporte déjà
- Les données de compte : e-mail, identifiant, biographie, éventuel avatar Gravatar associé.
- Les commentaires laissés par l’utilisateur, avec leur date et le contenu associé.
- Les métadonnées enregistrées via les hooks d’export standard des extensions déjà compatibles (WooCommerce, par exemple, si la plateforme vend des parcours payants).
Sur un LMS construit avec un plugin dédié (LearnDash, Tutor LMS, ou une solution maison à base de types de contenu personnalisés), la progression dans les cours, les résultats de quiz et les certificats obtenus ne sont en général pas couverts nativement. C’est là qu’intervient un exporteur personnalisé.
Enregistrer un exporteur personnalisé pour les données du LMS

Le filtre wp_privacy_personal_data_exporters permet d’ajouter une fonction de récupération de données à la liste des exporteurs exécutés par l’outil natif.
add_filter( 'wp_privacy_personal_data_exporters', function ( $exporters ) {
$exporters['wpmoderne-lms-progression'] = array(
'exporter_friendly_name' => __( 'Progression pédagogique', 'wpmoderne' ),
'callback' => 'wpmoderne_exporter_progression_lms',
);
return $exporters;
} );
function wpmoderne_exporter_progression_lms( $email_address, $page = 1 ) {
$user = get_user_by( 'email', $email_address );
$data = array();
if ( $user ) {
$cours_termines = get_user_meta( $user->ID, '_lms_cours_termines', true ) ?: array();
foreach ( $cours_termines as $cours_id => $date_fin ) {
$data[] = array(
'group_id' => 'wpmoderne-lms-progression',
'group_label' => __( 'Progression pédagogique', 'wpmoderne' ),
'item_id' => 'cours-' . $cours_id,
'data' => array(
array(
'name' => __( 'Cours', 'wpmoderne' ),
'value' => get_the_title( $cours_id ),
),
array(
'name' => __( 'Terminé le', 'wpmoderne' ),
'value' => $date_fin,
),
),
);
}
}
return array(
'data' => $data,
'done' => true,
);
}
Vérifier que l’exporteur fonctionne avant de l’exposer
- Tester depuis Outils > Exporter les données personnelles avec un compte de test possédant un historique de cours varié.
- Confirmer que le fichier ZIP généré contient bien la section « Progression pédagogique » avec les bonnes valeurs.
- Vérifier que les quiz en cours (non terminés) ne remontent pas par erreur comme des cours complétés.
- S’assurer qu’aucune donnée d’un autre apprenant ne fuite dans l’export, en particulier sur les parcours de groupe ou les cohortes.
Exposer un lien accessible depuis le profil de l’apprenant
L’écran natif se trouve dans l’administration, peu adapté à un apprenant sans accès à ce menu. La solution consiste à générer la demande d’export automatiquement depuis le front, via les mêmes fonctions internes que l’écran d’administration utilise.