Comment anonymiser les commentaires WordPress pour le RGPD

12 Nov 2018

Bonjour à tous,

Voici un tutoriel pour supprimer la collecte des données personnelles et leur stockage lors de la saisie des commentaires sur un blog WordPress.

Avantages de cette pratique :

  • mise en conformité RGPD automatique de la gestion des commentaires WordPress (car plus aucune information permettant d’identifier le visiteur n’est stockée en base de données),
  • pas de stockage de donnée inutile et pas de droit d’accès à gérer,
  • simplification de la saisie des commentaires pour les visiteurs.

En attendant que WordPress nous propose une solution native 😉

Remarque : Si vous souhaitez conserver la collecte de ces informations et leur stockage en base de données, vous pouvez simplement utiliser WP Comment Policy Checkbox, qui fait très bien le job de mise aux normes RGPD.

Remarque 2 : Si vous utilisez un filtre anti-SPAM basé sur les adresses IP (ou toute autre extension de sécurité exploitant ce renseignement), vous pouvez adapter ce tuto pour ne collecter que cette information et tout de même éviter aux utilisateurs de saisir URL du site et adresse e-mail (détails plus bas), mais vous devrez alors également installer le plugin ci-dessus pour être conforme RGPD (puisque stockage d’une donnée permettant d’identifier le visiteur).

Commentaires WordPress et RGPD

Lorsque vous laissez un commentaire sur un blog WordPress, ce dernier stocke les informations personnelles suivantes :

  • Votre nom,
  • L’URL de votre site si vous la renseignez,
  • Votre adresse e-mail,
  • Votre adresse IP.

Un commentaire dans le backend WordPress

Pour être conforme au RGPD, il faut donc en théorie :

  • recueillir le consentement de l’utilisateur pour le stockage de ces données,
  • lui expliquer comment elles seront utilisées,
  • proposer un moyen de les consulter, modifier, anonymiser (ou supprimer).

Et cela oblige ainsi le webmaster du site à sortir l’artillerie lourde : case à cocher, phrase d’explication, lien vers la politique de confidentialité, mise à jour de la politique de confidentialité et formulaire de demande d’accès aux données (consultation, modification et suppression).

Et pour l’utilisateur, il faut encore cocher une case de plus…

Je me suis donc posé la question : « Mais a-t-on vraiment besoin de collecter ces données ? »
Eh bien personnellement, NON !

Elles ne me sont d’aucune utilité, et je pense que c’est également le cas pour de nombreux blogs.

Petit bémol, donc, si vous avez bien lu l’introduction, pour les sites utilisant les adresses IP pour le filtrage du SPAM

Une solution simple et… radicale !

Donc, plutôt que d’installer un plugin ou coder une solution équivalente, j’ai tout simplement choisi de supprimer complètement la collecte et le stockage des informations personnelles.

Ainsi, l’utilisateur perd moins de temps à renseigner des champs inutiles, et il est même rassuré car il n’expose pas ces données personnelles.

Et côté webmaster, il n’y a plus à se soucier de rien (sauf peut-être du SPAM mais personnellement je suis plutôt épargné pour le moment) !

Dans la pratique, je conserve quand même un champs de saisie pour que l’utilisateur laisse son prénom ou un pseudo ; c’est plus humain ! Mais comme ça ne permet pas d’identifier la personne, cela reste « RGPD-free » :

Un commentaire dans le backend WordPress sans les informations personnelles de l'utilisateur

Préliminaire

Avant tout, afin que WordPress nous laisse saisir un commentaire sans râler, il faut désactiver le contrôle de la saisie sur la page Réglages / Discussion :

Désactivation du contrôle des commentaires dans WordPress

Suppression de la saisie des données inutiles

Ensuite, pour supprimer les deux champs à saisir inutiles (URL du site et adresse e-mail), insérez simplement le code suivant dans le fichier functions.php de votre thème enfant :

function pavenum_disable_comment_infos( $fields ) { 
  unset( $fields['email'] );
  unset( $fields['url'] );
  return $fields;
}
add_filter('comment_form_default_fields','pavenum_disable_comment_infos');

Modification du message d’avertissement

On en profite pour modifier le message indiquant que l’adresse e-mail ne sera pas diffusée, afin de l’adapter à notre besoin :

function pavenum_replace_comment_notice( $defaults ) {
  $defaults['comment_notes_before'] = '<p class="comment-notes"><span id="email-notes">Votre adresse IP ne sera pas collectée<br>
    Vous pouvez renseigner votre prénom ou votre pseudo si vous êtes un humain ;-)</span></p>';
  return $defaults;
}
add_filter('comment_form_defaults','pavenum_replace_comment_notice');

Et pour un blog multilingue, par exemple :

function pavenum_replace_comment_notice( $defaults ) {
  $lang = get_locale();
  switch ( $lang ) {
    case 'en_GB' :
    case 'en_US' :
      $message = "Your IP address will not be collected.<br>You can enter your first name or nickname if you are human ;-)";
      break;
    default :
      $message = "Votre adresse IP ne sera pas collectée.<br>Vous pouvez renseigner votre prénom ou votre pseudo si vous êtes un humain ;-)";
  }
  $defaults['comment_notes_before'] = '<p class="comment-notes"><span id="email-notes">' . $message . '</span></p>';
  return $defaults;
}
add_filter('comment_form_defaults','pavenum_replace_comment_notice');

Suppression du stockage de l’adresse IP

Ignorez cette étape si vous souhaitez conserver le stockage de l’adresse IP !
Votre système de gestion des commentaires ne sera alors plus conforme RGPD et vous devrez installer le plugin cité en introduction.

Pour empêcher WordPress de stocker l’adresse IP, on utilise le filtre adéquat pour renvoyer une adresse vide à la place de la vraie :

function pavenum_comment_user_ip() {
  return '';
}
add_filter( 'pre_comment_user_ip', 'pavenum_comment_user_ip' );

Anonymisation des commentaires existants

Dernière étape, pour nettoyer les commentaires déjà présents dans votre base de données, une petite requête SQL s’impose.

Si vous souhaitez conserver les adresses IP déjà mémorisées, il faut supprimer la fin de la deuxième ligne de la requête proposée ci-dessous : >> , comment_author_IP = '' <<
Votre système de gestion des commentaires ne sera alors plus conforme RGPD et vous devrez installer le plugin cité en introduction.

Pour exécuter la requête, plusieurs solutions, au choix.

1. Utilisation de PHPmyAdmin

Connectez-vous au PHPmyAdmin de votre serveur, onglet « SQL », et copiez la requête suivante dans la zone de texte :

USE my_database;
UPDATE wp_comments SET comment_author_email = '', comment_author_url = '', comment_author_IP = ''

En remplaçant :

  • my_database par l’identifiant de votre base de données
  • le préfixe par défaut « wp_ » de wp_comments par le préfixe de vos tables si vous n’utilisez pas le préfixe par défaut.

Cliquez sur le bouton exécuter.

Nettoyage des commentaires WordPress en SQL

2. Utilisation de functions.php

Si vous n’avez pas accès à PHPmyAdmin ou si vous ne voulez pas vous en approcher, cette seconde solution permet d’exécuter la requête via le fichier function.php.

La technique est (relativement) simple : on insère la requête à un endroit bien choisi dans le code de WordPress à l’aide d’un crochet (« hook »), on provoque son exécution, puis on la supprime car on n’aura plus besoin de l’exécuter à l’avenir.

J’ai choisi pour plus de simplicité d’insérer la requête dans le second script PHP que nous avons utilisé :

function pavenum_comment_user_ip() {

  /*** A SUPPRIMER APRÈS UTILISATION ***/
  global $wpdb;
  $rows_updated = $wpdb->query( $wpdb->prepare(
    "
    UPDATE $wpdb->comments 
    SET comment_author_email = '', comment_author_url = '', comment_author_IP = ''
    "
  ) );
  /*************************************/

  return '';
}
add_filter( 'pre_comment_user_ip', 'pavenum_comment_user_ip' );

Ici, rien à remplacer car la base et le préfixe des tables sont connus de WordPress en interne ; c’est pratique !

Pour provoquer l’exécution de la requête, il suffit d’entrer un commentaire bidon sur votre blog, et au moment de stocker l’adresse IP, WordPress va nettoyer tous les commentaires existants.

Tout de suite après, n’oubliez pas de supprimer la requête du script ! Et le commentaire bidon !
Ce serait dommage d’exécuter une requête inutile et potentiellement gourmande à chaque nouveau commentaire…

3. Utiliser un plugin pour exécuter du SQL.

Je vous laisse chercher 😉

Conclusion

Si, comme pour moi, les données personnelles recueillies lors de la saisie d’un commentaire vous sont inutiles, alors autant décharger WordPress de leur collecte/stockage et par la même occasion rendre la gestion des commentaires conforme au RGPD 😉

Attention cependant, car l’adresse IP peut être utilisée sur votre site par des extensions de type filtre anti-SPAM ou firewall. Dans ce cas, on peut adapter la solution pour conserver son stockage, mais le système n’étant alors plus « RGPD-free », l’installation du plugin cité en introduction s’impose.

N’hésitez pas à me faire part de vos remarques ; je suis curieux de connaître vos réflexions sur ce sujet !