Nettoyer la base de données WordPress : guide complet et outil gratuit

5 juillet 2026

Avec le temps, toute base de données WordPress accumule des données inutiles : métadonnées orphelines, transients expirés, révisions d’articles, caches périmés. Ces résidus ralentissent votre site, alourdissent vos sauvegardes et complexifient la maintenance. Un nettoyage régulier est l’un des gestes les plus efficaces pour maintenir un WordPress performant.

Pourquoi proposer ce plugin ?

Perspectives Marketing gère un parc de plus de 85 sites clients. Pour automatiser et sécuriser cette tâche, nous avons développé PM DB Cleaner, un plugin open source disponible gratuitement sur GitHub. D’abord créé pour un usage interne, sous forme de mu-plugin, il a peu à peu évolué jusqu’à devenir ce qu’il est aujourd’hui : globalement, on est passé d’un « outil de dev » à quelque chose d’un peu plus graphique, pour le confort d’utilisation.

Jusqu’ici, j’ai utilisé d’autres outils comme les excellents WP-Sweep, WPS Cleaner ou encore WP-Optimize, mais il y a toujours quelque chose qui ne me convenait pas : trop de risques pris parfois, trop d’options, ou alors des fonctionnalités que je n’utilisais pas (le cache chez WP-Optimize par exemple), et surtout je voulais un truc léger.

Je suis un peu extrémiste sur ce point : j’aime bien lorsque quelque chose accomplit une action. Donc pour moi, un antivirus, il fait antivirus, il ne fait pas parefeu (ça c’est le parefeu). Idem, chez Divi, on ne devrait pas trouver d’optimisations des performances : Divi, c’est le constructeur de pages, la performance, c’est le plugin de cache. Les plugins SEO selon moi ne devraient pas proposer de créer de redirections, ça c’est l’excellent plugin Redirection qui s’en charge (d’ailleurs lui ne fait que ça). Et ainsi de suite.

Et comme j’aime aussi le pricipe de l’open source, je ne compte pas le rendre payant non plus ou intégrer des fonctionnalités qui ne seraient disponibles que dans une version premium. PM DB Cleaner est parti d’un besoin interne pour la maintenance des sites que je gère, et son évolution a été accélérée par l’arrivée de l’IA. Aujourd’hui, je considère qu’il est ok pour être partagé.

Le tuto est un peu trop long ? Pas de problème, c’est résumé ici :

  • Une base de données WordPress accumule naturellement de la pollution avec le temps et s’alourdit
  • Le nettoyage de la base de données peut s’avérer dangereux si on ne sait pas ce qu’on faut (dangereux du style « j’ai pété tout mon site »)
  • notre plugin PM DB Cleaner effectue ce nettoyage de base de données pour vous, de manière fiable et automatisée
  • et pour ceux qui savent ce qu’il faut nettoyer encore plus finement, PM DB Cleaner propose aussi un nettoyage plus poussé

Pourquoi nettoyer la base de données WordPress ?

Des performances améliorées

WordPress charge certaines données directement en mémoire à chaque requête – c’est le mécanisme « autoload » de la table ‘wp_options’. Quand des extensions (ou plugins) désinstallées laissent leurs options derrière eux, ou quand le cache ‘dirsize_cache’ grossit démesurément, chaque page chargée embarque des données inutiles. Réduire ce poids améliore le temps de réponse du serveur, souvent de façon mesurable.

Des sauvegardes plus légères et plus rapides

Forcément, une base de données allégée se sauvegarde plus vite et occupe moins d’espace. Sur un parc de sites, cela représente une économie significative en stockage et en temps de traitement.

Une maintenance simplifiée

Les métadonnées orphelines, les tâches cron sans callback, les options résiduelles de plugins supprimés : autant de résidus qui compliquent le diagnostic lorsqu’un problème survient. Une base propre est une base lisible. Bien entendu, ce point va vous intéresser si vous vous occupez de la maintenance de votre propre site.

Un site plus sûr

Une base de données WordPress se charge de pollution au fil du temps. Ca ne se voit pas, c’est numérique, ce n’est pas crade comme un moteur de voiture encrassé, mais ça ne signifie pas que ça n’existe pas. Les données obsolètes, les transient expirés (désolé pour les noms techniques, c’est vraiment comme ça que ça s’appelle) peuvent masquer des comportements anormaux. Les supprimer régulièrement réduit la surface d’exposition et facilite les audits de sécurité.

Nettoyage d'un miroir avec spray

Qu’est-ce qui s’accumule dans une base WordPress ?

Les métadonnées orphelines

Chaque article, commentaire, catégorie ou utilisateur peut avoir des métadonnées associées (les métadonnées sont des données qui définissent l’élément parent). Quand l’élément parent est supprimé, ses métadonnées restent souvent en base, sans aucune utilité. Ces entrées orphelines peuvent représenter des milliers de lignes sur un site actif.

Les métadonnées dupliquées

Certains plugins écrivent plusieurs fois la même valeur pour la même clé et le même élément, sans vérifier si elle existe déjà. Ces doublons gonflent inutilement les tables.

Les caches oEmbed

Chaque fois que WordPress intègre une vidéo YouTube, un tweet ou tout autre contenu oEmbed, il en cache le résultat en base. Ces caches s’accumulent et deviennent obsolètes sans jamais être nettoyés automatiquement.

Les transients expirés

Les transients sont des données temporaires stockées en base avec une date d’expiration. WordPress les supprime à l’accès, mais uniquement quand quelqu’un y accède. Les transients expirés qui ne sont jamais relus restent indéfiniment en base. Ca ne fait rien, ce n’est pas dangereux, c’est juste que ça s’accumule et à terme, votre base de données pèse lourd pour pas grand chose.

Les révisions d’articles

Par défaut, WordPress conserve un nombre illimité de révisions pour chaque article. Sur un site avec beaucoup de contenu édité régulièrement, cela peut représenter plusieurs fois le volume de contenu réel. Par exemple, chez Perspectives Marketing, nous limitons à 10 le nombre de révisions par article.

Les tâches CRON orphelines

Une tâche CRON est une tâche automatisée. L’exemple le plus simple à comprendre est pour moi celui de la sauvegarde : quand on dit que la base de données est sauvegardée quotidiennement à minuit, c’est en réalité une tâche CRON qui se lance tous les jours à minuit pour exécuter le script de sauvegarde de la base de données.

Le problème : au cours de la vie d’un site, quand un plugin est désinstallé sans nettoyer ses tâches planifiées, celles-ci continuent de se déclencher indéfiniment, sans effet, mais en consommant des ressources à chaque exécution.

L’overhead des tables MySQL

Après des suppressions massives, MySQL conserve l’espace disque alloué même si les données ont disparu. C’est comme si vous enleviez des vêtements dans un placard : ils ne sont plus là mais vous ne pouvez pas récupérer l’espace de rangement. A terme, les tables de la base deviennent de plus en plus fragmentées. Cette opération (‘OPTIMIZE TABLE’ pour les techniciens) récupère cet espace et améliore les performances d’accès.

Les résidus de plugins désinstallés dans wp_options

C’est l’un des problèmes les plus fréquents et l’enfer de WordPress (selon moi) : un plugin supprimé laisse ses options de configuration en base. Vous avez changé de plugins plusieurs fois, ou de prestataires, chacun installant ses extensions fétiches sur votre site ? Il est absolument certain que la table ‘wp_options’ contient des centaines d’entrées inutiles, dont certaines continuent d’être chargées à chaque requête. Vous pouvez le vérifier facilement en allant jeter un oeil dans le back office WordPress > Outils > Santé du site

PM DB Cleaner

J’ai encore testé une IA en lui demandant uniquement : « nettoyage de base de données WordPress dans un style futuriste ».
J’aime bien le côté futuriste, et le cercle me rappelle presque un tambour de machine à laver, donc parfait pour le thème abordé ici. 

PM DB Cleaner : le plugin de nettoyage pour WordPress

PM DB Cleaner est un plugin WordPress open source développé par nos soins. Je vais être transparent, si le code original était bien le nôtre dans ses premières versions, c’est l’IA qui m’a fait gagner du temps sur son évolution, à la fois en termes de graphisme et de fonctionnalités.

Il automatise les nettoyages récurrents et offre des outils manuels pour les interventions ponctuelles, le tout avec des garde-fous explicites pour éviter toute suppression accidentelle.

Les nettoyages automatiques

PM DB Cleaner planifie 3 tâches CRON dès son activation.

Nettoyage quotidien – Action Scheduler

Supprime les actions terminées, échouées ou annulées de plus de 7 jours dans les tables d’Action Scheduler (utilisé notamment par WooCommerce et de nombreux plugins modernes). Les logs associés aux actions supprimées sont également nettoyés.

Nettoyage hebdomadaire – Base de données

Prend en charge l’ensemble des tables de métadonnées :

  • Posts : métadonnées orphelines, métadonnées dupliquées, caches oEmbed
  • Commentaires : métadonnées orphelines, métadonnées dupliquées, commentaires en corbeille
  • Termes & Taxonomies : métadonnées orphelines, métadonnées dupliquées, relations de taxonomie orphelines
  • Utilisateurs : métadonnées orphelines et dupliquées (hors multisite)
  • WooCommerce : variations de produits orphelines (si WooCommerce est actif)

Nettoyage mensuel – Commentaires et transients

  • Suppression définitive des commentaires en corbeille
  • Suppression des transients expirés (réguliers et site transients)
  • Suppression des timeouts de transients orphelins (timeouts pointant vers un transient qui n’existe plus)

Les outils de nettoyage manuels

Cette partie est plutôt réservée aux techniciens, développeurs, aux gens qui connaissent leur chemin dans PHPMyAdmin. Certaines opérations nécessitent une décision humaine. PM DB Cleaner les regroupe dans des panneaux dédiés, avec confirmation explicite obligatoire avant toute action irréversible.

Les métadonnées ('postmeta')

Analyse les clés de métadonnées présentes dans les tables ‘postmeta’, ‘termmeta’ et ‘usermeta’. Vous sélectionnez les clés à supprimer pour éliminer les champs personnalisés résiduels d’un plugin désinstallé. Une sauvegarde préalable est exigée par confirmation.

La table 'wp_options'

C’est LA table problématique de WordPress, qui devient surchargée en un rien de temps. Ce bloc donne un accès complet à la table ‘wp_options’ avec filtre en temps réel. Permet d’identifier et supprimer les options laissées par des plugins désinstallés. Zone à risque : le plugin affiche un avertissement explicite et exige une double confirmation.

L'autoload

PM DB Cleaner analyse le volume total chargé automatiquement (d’où l’autoload) et identifie les 10 options les plus lourdes. Vous pouvez désactiver l’autoload option par option, sans supprimer la donnée, uniquement modifier son mode de chargement.

Le Dirsize Cache

Supprime le cache de taille des dossiers ‘uploads’ généré par WordPress. Ce cache peut devenir très volumineux sur les sites avec beaucoup de médias. Il se recrée automatiquement à la prochaine visite de la médiathèque, sa suppression sans risque.

Overhead de base de données

Lorsque vous nettoyez l’overhead, le plugin lance ‘OPTIMIZE TABLE’ sur les tables WordPress présentant de l’espace fragmenté. À effectuer de préférence hors heures de pointe sur les sites à fort trafic, sans quoi ça peut ralentir le site voire le planter temporairement.

Tâches Cron orphelines

Cette option détecte les hooks planifiés sans callback enregistré, typiquement les tâches laissées par un plugin désinstallé. La détection s’effectue au chargement de la page d’administration pour éviter les faux positifs. La suppression est manuelle avec confirmation obligatoire.

Sécurité et traçabilité

Toutes les suppressions sont loguées dans ‘wp-content/uploads/pm-db-cleaner.txt’ avec horodatage, mode (AUTO ou MANUEL) et nombre d’éléments supprimés. Si vous avez une extension de sécurité installé, il y a des chances que votre dossier « uploads » soit protégé, c’e’st pourquoi j’ai choisi de le poser là-bas plutôt que dans « wp-content ». Une rotation automatique prend en charge les fichiers dépassant 5 MB.

Enfin, chaque action AJAX est protégée par nonce et vérification de capacité (‘manage_options’ pour les intimes). Les opérations de suppression sont limitées à 500 enregistrements par exécution pour prévenir les timeouts.

Installation & Utilisation

La partie facile !

  1. Télécharger PM DB Cleaner depuis GitHub
  2. Décompresser dans ‘wp-content/plugins/pm-db-cleaner/’
  3. Activer dans le back-office WordPress > Extensions > Activer
  4. Accéder au plugin dans Outils > PM DB Cleaner

Les 3 tâches CRON de nettoyage sont planifiées automatiquement à l’activation. Elles sont supprimées proprement à la désactivation.

Voilà, c’est tout pour aujourd’hui. Si l’aventure vous tente, installez-le, faites des sauvegardes, testez-le, faites-moi vos retours. En attendant, je vous souhaite un bél été et n’oubliez pas : surfez sur le web, videz le cache !

Homme souriant aux yeux bleus

Stéphane PISKORZ
Accro à WordPress depuis 2012, j'ai tellement codé que j'ai fini par parler en HTML à mes plantes. Formé à l'art noble de la rédaction web, j'ai plongé tête la première dans le grand bain du référencement naturel et la sécurité des sites web. Quand je ne suis pas en train de sauver le monde digital, on me trouve à Pornic, guidant les entreprises locales dans le jungle du numérique avec ma boussole SEO et mon chapeau blanc d'Indiana Jones du web. Et pour le fun, je fais passer des soutenances à des étudiants en SEO, en essayant de ne pas leur poser trop de questions orchidoclastes.