Le RGPD et WordPress : ce que ça change concrètement au Sénégal
Depuis l’entrée en vigueur du RGPD en Europe (mai 2018) et de la loi n°2008-12 sur la protection des données personnelles au Sénégal, tout site WordPress qui collecte des données d’utilisateurs doit se conformer à des règles strictes. Si votre site cible des visiteurs européens ou collecte des données de résidents sénégalais, vous êtes concerné. La Commission de Protection des Données Personnelles (CDP) du Sénégal est l’autorité de contrôle locale.
Ce guide vous montre exactement quoi faire sur votre site WordPress pour être en conformité, avec des exemples de code et des configurations concrètes.
1. Comprendre quelles données votre site collecte
Avant toute action, faites l’inventaire de ce que votre WordPress collecte réellement :
| Source | Données collectées | Base légale |
|---|---|---|
| Formulaire de contact | Nom, email, message | Consentement |
| Commentaires | Nom, email, IP, contenu | Intérêt légitime |
| WooCommerce | Nom, adresse, téléphone, historique achats | Exécution du contrat |
| Google Analytics | IP, pages vues, appareil, localisation | Consentement |
| Newsletter | Email, prénom, préférences | Consentement |
| Cookies | Identifiants de session, préférences | Consentement (sauf essentiels) |
| Wave/PayDunya | Numéro téléphone, transactions | Exécution du contrat |
Audit rapide avec un plugin
Installez WP Activity Log (gratuit) pour voir exactement quelles données transitent sur votre site. Allez dans Réglages → Confidentialité : WordPress 5.x+ intègre déjà des outils de base pour la conformité.
2. Bandeau de cookies : implémentation correcte
Le simple bandeau « Ce site utilise des cookies » ne suffit pas. Vous devez bloquer les cookies non-essentiels AVANT le consentement. Voici comment faire :
Option 1 : Complianz (recommandé)
Le plugin Complianz (gratuit) gère automatiquement le blocage des scripts avant consentement :
- Installez et activez Complianz depuis Extensions → Ajouter
- Lancez l’assistant : il scanne votre site et détecte les cookies
- Configurez la région : sélectionnez « Europe (RGPD) » et « Afrique » si vous ciblez les deux
- Le plugin bloque automatiquement Google Analytics, Facebook Pixel, etc. jusqu’au consentement
Option 2 : Bandeau personnalisé (sans plugin)
Si vous voulez un bandeau léger, voici une implémentation complète :
<!-- Ajoutez dans footer.php avant </body> -->
<div id="cookie-banner" style="display:none; position:fixed; bottom:0; left:0; right:0;
background:#1a1a2e; color:#fff; padding:20px; z-index:9999; font-family:sans-serif;">
<div style="max-width:1200px; margin:0 auto; display:flex; align-items:center;
flex-wrap:wrap; gap:15px;">
<p style="flex:1; margin:0; min-width:200px; font-size:14px;">
Ce site utilise des cookies pour améliorer votre expérience.
Les cookies analytiques ne sont activés qu'avec votre accord.
<a href="/politique-de-confidentialite" style="color:#e94560;">En savoir plus</a>
</p>
<div style="display:flex; gap:10px;">
<button onclick="acceptCookies()" style="background:#e94560; color:#fff;
border:none; padding:10px 25px; border-radius:5px; cursor:pointer;">
Tout accepter
</button>
<button onclick="refuseCookies()" style="background:transparent; color:#fff;
border:1px solid #fff; padding:10px 25px; border-radius:5px; cursor:pointer;">
Refuser
</button>
</div>
</div>
</div>
<script>
// Vérifier si le choix a déjà été fait
if (!localStorage.getItem('cookie_consent')) {
document.getElementById('cookie-banner').style.display = 'block';
}
function acceptCookies() {
localStorage.setItem('cookie_consent', 'accepted');
document.getElementById('cookie-banner').style.display = 'none';
// Charger les scripts analytiques uniquement après consentement
loadAnalytics();
}
function refuseCookies() {
localStorage.setItem('cookie_consent', 'refused');
document.getElementById('cookie-banner').style.display = 'none';
}
function loadAnalytics() {
// Google Analytics - chargé SEULEMENT après consentement
var script = document.createElement('script');
script.src = 'https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX';
script.async = true;
document.head.appendChild(script);
script.onload = function() {
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-XXXXXXX', { anonymize_ip: true });
};
}
// Au chargement : si déjà accepté, charger les analytics
if (localStorage.getItem('cookie_consent') === 'accepted') {
loadAnalytics();
}
</script>
3. Page de politique de confidentialité
WordPress génère une page modèle via Réglages → Confidentialité. Personnalisez-la avec ces sections obligatoires :
<!-- Structure de votre page de politique de confidentialité -->
<h2>Politique de confidentialité – [Nom de votre site]</h2>
<p><strong>Dernière mise à jour :</strong> [date]</p>
<h3>1. Responsable du traitement</h3>
<p>[Votre nom/entreprise]<br>
[Adresse à Dakar]<br>
Email : [votre@email.com]<br>
Téléphone : +221 XX XXX XX XX</p>
<h3>2. Données collectées</h3>
<p>Nous collectons les données suivantes :</p>
<ul>
<li><strong>Formulaire de contact :</strong> nom, email, message
(conservés 1 an, base légale : consentement)</li>
<li><strong>Commandes :</strong> nom, adresse, téléphone, historique
(conservés 5 ans, base légale : obligation légale fiscale)</li>
<li><strong>Analytics :</strong> données anonymisées de navigation
(conservées 14 mois, base légale : consentement)</li>
</ul>
<h3>3. Vos droits</h3>
<p>Conformément à la loi sénégalaise n°2008-12 et au RGPD, vous disposez de :</p>
<ul>
<li>Droit d'accès à vos données</li>
<li>Droit de rectification</li>
<li>Droit à l'effacement ("droit à l'oubli")</li>
<li>Droit à la portabilité</li>
<li>Droit d'opposition</li>
</ul>
<p>Pour exercer vos droits : <a href="mailto:votre@email.com">votre@email.com</a></p>
<p>Réclamation auprès de la CDP : <a href="https://www.cdp.sn">www.cdp.sn</a></p>
4. Formulaires : ajouter le consentement explicite
Contact Form 7
Ajoutez une case de consentement dans chaque formulaire CF7 :
[acceptance rgpd] J'accepte que mes données soient traitées conformément à la
<a href="/politique-de-confidentialite">politique de confidentialité</a>. [/acceptance]
WPForms / Gravity Forms
Ajoutez un champ « RGPD/Consentement » obligatoire. Dans WPForms : Champs → Conformité RGPD. Activez aussi la désactivation des cookies utilisateur et l’anonymisation des entrées.
Commentaires WordPress
WordPress affiche par défaut une case « Enregistrer mon nom et email dans ce navigateur ». Pour la rendre conforme, ajoutez dans functions.php :
// Modifier le texte de la case de consentement des commentaires
add_filter('comment_form_default_fields', function($fields) {
$fields['cookies'] = '<p class="comment-form-cookies-consent">
<input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent"
type="checkbox" value="yes">
<label for="wp-comment-cookies-consent">
En cochant cette case, j'accepte le stockage de mes données
conformément à notre <a href="/politique-de-confidentialite">
politique de confidentialité</a>.
</label>
</p>';
return $fields;
});
5. WooCommerce et la conformité
Si vous vendez en ligne avec WooCommerce et des paiements Wave/Orange Money :
Case de consentement au checkout
// Ajouter une case RGPD au checkout WooCommerce
add_action('woocommerce_review_order_before_submit', function() {
echo '<p class="form-row">
<label class="woocommerce-form__label">
<input type="checkbox" name="rgpd_consent" required>
<span>J\'accepte que mes données soient traitées pour le
traitement de ma commande.
<a href="/politique-de-confidentialite" target="_blank">
Politique de confidentialité</a></span>
</label>
</p>';
});
// Valider que la case est cochée
add_action('woocommerce_checkout_process', function() {
if (!isset($_POST['rgpd_consent'])) {
wc_add_notice('Vous devez accepter notre politique de confidentialité.', 'error');
}
});
Durées de conservation WooCommerce
Allez dans WooCommerce → Réglages → Comptes et confidentialité et configurez :
- Comptes inactifs : suppression après 24 mois
- Commandes terminées : conservation 60 mois (obligation fiscale sénégalaise)
- Commandes annulées : suppression après 6 mois
6. Droit à l’effacement : outil d’export et suppression
WordPress intègre nativement les outils RGPD depuis la version 4.9.6 :
- Export des données : Outils → Exporter les données personnelles — entrez l’email de l’utilisateur, WordPress génère un fichier ZIP avec toutes ses données
- Suppression des données : Outils → Effacer les données personnelles — supprime toutes les données liées à un email
Automatiser les demandes d’effacement
// Ajouter un formulaire de demande de suppression en front-end
add_shortcode('demande_suppression', function() {
if (isset($_POST['email_suppression'])) {
$email = sanitize_email($_POST['email_suppression']);
if (is_email($email)) {
// Créer une demande d'effacement
$request_id = wp_create_user_request($email, 'remove_personal_data');
if (!is_wp_error($request_id)) {
wp_send_user_request($request_id);
return '<div class="alert-success">Votre demande a été envoyée.
Vérifiez votre email pour confirmer.</div>';
}
}
return '<div class="alert-error">Email invalide.</div>';
}
return '<form method="post">
<label>Votre email :</label>
<input type="email" name="email_suppression" required>
<button type="submit">Demander la suppression de mes données</button>
</form>';
});
7. Sécuriser les données collectées
La conformité ne se limite pas aux formulaires. Vous devez aussi protéger les données :
SSL obligatoire
# .htaccess — forcer HTTPS sur tout le site
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Headers de sécurité
Header always set X-Content-Type-Options "nosniff"
Header always set X-Frame-Options "SAMEORIGIN"
Header always set Referrer-Policy "strict-origin-when-cross-origin"
Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
Limiter l’accès aux données
// Restreindre l'accès REST API aux utilisateurs authentifiés
add_filter('rest_authentication_errors', function($result) {
if (!is_user_logged_in()) {
// Autoriser certains endpoints publics
$public_routes = ['/wp/v2/posts', '/wp/v2/pages', '/wp/v2/categories'];
$current_route = $_SERVER['REQUEST_URI'];
foreach ($public_routes as $route) {
if (strpos($current_route, $route) !== false) {
return $result;
}
}
return new WP_Error('rest_forbidden',
'Accès non autorisé.', ['status' => 401]);
}
return $result;
});
8. Google Analytics en mode conforme
Google Analytics 4 (GA4) est plus respectueux de la vie privée, mais nécessite des réglages :
- Anonymisation IP : activée par défaut dans GA4
- Conservation des données : Admin → Paramètres de données → Conservation → 2 mois (minimum)
- Signaux Google : désactivez dans Admin → Paramètres de données → Collecte
- Partage des données : décochez toutes les options dans Admin → Paramètres du compte
Alternative : Matomo (auto-hébergé)
Pour une conformité totale, utilisez Matomo auto-hébergé. Les données restent sur votre serveur :
- Installez le plugin Matomo Analytics depuis WordPress
- Les données restent dans votre base de données MySQL
- Aucun cookie tiers, pas de transfert hors Afrique
- Configurez l’anonymisation IP (2 octets minimum)
9. Transfert de données hors du Sénégal
Point crucial pour les sites hébergés en Europe ou aux USA : la loi sénégalaise (article 49 de la loi 2008-12) encadre les transferts internationaux de données.
- Hébergement : privilégiez un hébergeur avec des serveurs en Afrique ou en Europe (OVH, Hetzner). Les hébergeurs locaux comme ATOS Sénégal ou Africa Hosting gardent vos données sur le continent
- Services tiers : pour chaque service (Mailchimp, Google, etc.), vérifiez les clauses contractuelles types (CCT) ou les garanties de protection
- Brevo (ex-Sendinblue) : hébergé en France, conforme RGPD — bon choix pour les newsletters
10. Checklist de mise en conformité
- ☐ Installer un bandeau de cookies qui bloque les scripts avant consentement
- ☐ Créer/mettre à jour la page de politique de confidentialité
- ☐ Ajouter des cases de consentement sur tous les formulaires
- ☐ Configurer les durées de conservation des données
- ☐ Activer SSL (HTTPS) sur tout le site
- ☐ Configurer Google Analytics en mode anonymisé (ou passer à Matomo)
- ☐ Tester les outils d’export/suppression des données (Outils → Exporter/Effacer)
- ☐ Vérifier les contrats avec les sous-traitants (hébergeur, email, paiement)
- ☐ Ajouter les headers de sécurité dans .htaccess
- ☐ Documenter le registre des traitements (qui, quoi, pourquoi, combien de temps)
- ☐ Faire une déclaration auprès de la CDP du Sénégal si nécessaire (www.cdp.sn)
La mise en conformité RGPD n’est pas un projet ponctuel mais un processus continu. Revoyez votre conformité tous les 6 mois, surtout après l’ajout de nouveaux plugins ou fonctionnalités qui collectent des données.