Skip to content

Tout pour WordPress, le développement web — et plus encore

🧹 Comment supprimer complètement un plugin WordPress : nettoyage étape par étape de la base de données et des fichiers

🧹 Comment supprimer complètement un plugin WordPress : nettoyage étape par étape de la base de données et des fichiers

Votre site ralentit jusqu’à devenir inutilisable, les sauvegardes gonflent jusqu’à atteindre un gigaoctet, et phpMyAdmin affiche des dizaines de tables avec des préfixes provenant d’extensions que vous avez «supprimées» il y a un an. Cela vous semble familier?

Le bouton standard «Supprimer» dans la section des extensions se contente de retirer le dossier de wp-content/plugins. Tout le reste (tables, options, tâches cron, shortcodes dans les articles) demeure dans la base de données et sur le disque. Les développeurs gèrent le nettoyage de manière variable: certains le font consciencieusement via uninstall.php, tandis que d’autres laissent tout en l’état.

Voici un algorithme complet pour supprimer une extension sans laisser de trace: du tableau de bord jusqu’au SQL manuel. Avec des sauvegardes à chaque étape et des instructions précises pour les extensions les plus répandues.

💡 Aperçu rapide:

  • La suppression via le tableau de bord n’est que la première étape; les tables, les shortcodes et les tâches cron nécessitent un nettoyage distinct
  • Avant toute opération sur la base de données, effectuez une sauvegarde complète (en utilisant les outils intégrés de votre hébergement ou une extension)
  • WooCommerce, Yoast SEO, Wordfence et d’autres extensions populaires possèdent leurs propres constantes et requêtes SQL
  • Une extension désactivée n’est pas «éteinte» mais «en veille»; ses fichiers restent accessibles en accès direct et constituent un vecteur d’attaque

Pourquoi le bouton «Supprimer» ne suffit pas

WordPress appelle le fichier uninstall.php d’une extension ou une fonction de rappel depuis le fichier principal lors de sa suppression. Mais cela ne fonctionne que si le développeur a créé un tel fichier. En pratique, environ la moitié des extensions du catalogue WordPress.org n’ont pas de uninstall.php ou l’implémentent partiellement: elles suppriment le dossier mais laissent la base de données intacte.

Ce qui subsiste après une suppression standard:

Type de résidu

Où chercher

Risque

Tables de base de données

wp_* (préfixe de l’extension)

Croissance de la base, requêtes plus lentes

Lignes dans wp_options

option_name LIKE %pluginname%

Options autoload encombrées

Lignes dans wp_postmeta

meta_key LIKE %pluginname%

Données mortes lors de la récupération des articles

Shortcodes dans le contenu

Texte des articles/pages

[shortcode] cassé en frontend

Tâches cron

wp_optionscron

Requêtes HTTP inutiles vers wp-cron

Fichiers hors du dossier de l’extension

wp-content/uploads/

Encombrement du disque

Règles dans .htaccess

Racine du site

Conflits avec de nouvelles extensions

Les lignes avec le drapeau autoload sont particulièrement critiques: WordPress les charge à chaque requête. Cinquante lignes autoload superflues ajoutent 30 à 80 ms au temps de réponse du serveur. Cela semble négligeable à première vue, mais avec 100 000 visites mensuelles, l’impact sur les performances est notable.

Désactivation ou suppression: quelle est la différence

La différence est fondamentale, et il est utile de la comprendre avant de commencer le nettoyage.

Critère

Désactivation

Suppression complète

Fichiers de l’extension

Restent dans wp-content/plugins/

Supprimés

Code

Non exécuté, disponible en lecture

Absent

Tables de base de données

Conservées

Dépend du développeur

Réglages

Conservés

Dépend de uninstall.php

Mises à jour

Arrivent (pour les extensions gratuites de.org)

N’arrivent pas

Vulnérabilités

Le code sur le serveur est un vecteur d’attaque

Aucune menace

Réversibilité

Un clic et l’extension est de nouveau active

Uniquement depuis une sauvegarde

Une extension désactivée n’est pas «éteinte» mais «en veille». Les fichiers PHP résident physiquement sur le serveur. Si une vulnérabilité est découverte dans le code, un attaquant peut accéder directement au fichier via le chemin dans wp-content/plugins/, en contournant la logique de WordPress. Les pare-feu WAF ne résolvent pas ce problème: la meilleure protection consiste à supprimer totalement le code inutilisé du serveur.

La règle est simple: si vous n’avez pas utilisé une extension depuis plus d’une semaine, supprimez-la. La reconfigurer est plus rapide que de gérer une intrusion via une faille dans du code abandonné.

Nettoyage étape par étape: 4 phases

Étape 1: Suppression via le tableau de bord

La première phase est standard. Allez dans Extensions → Installées, trouvez celle dont vous avez besoin. Les extensions actives sont mises en évidence par une barre bleue, les désactivées ne le sont pas.

Cliquez sur «Supprimer» sous le nom, confirmez avec le bouton «Oui, supprimer ces fichiers». WordPress appellera le fichier uninstall.php de l’extension (s’il existe) et supprimera le dossier de wp-content/plugins.

Liste des extensions WordPress avec bouton de suppression

Pour les extensions simples (un widget léger, le remplacement du logo de la page de connexion), le nettoyage s’arrête ici. Elles ne créent pas de tables et n’écrivent pas dans wp_postmeta. Mais les extensions de cache, de SEO, de sécurité, de galerie et les constructeurs de pages nécessitent des actions supplémentaires.

Étape 2: Nettoyage des fichiers via FTP

Certaines extensions créent des dossiers en dehors de wp-content/plugins/. Emplacements typiques:

  • wp-content/uploads/plugin-name/: cache, images compressées, fichiers exportés
  • wp-content/ngg/: NextGEN Gallery
  • wp-content/ewww/: EWWW Image Optimizer
  • wp-content/backup/: extensions de sauvegarde

Connectez-vous au serveur via FTP (FileZilla, WinSCP) ou le gestionnaire de fichiers de l’hébergement. Allez dans wp-content/, trouvez le dossier portant le nom de l’extension et supprimez-le. Avant la suppression, téléchargez le dossier en local; s’il contenait des fichiers uploadés par les utilisateurs, restaurez-les.

Les extensions de cache (WP Rocket, W3 Total Cache, LiteSpeed Cache) écrivent en plus dans wp-content/cache/ et créent wp-content/advanced-cache.php. Supprimez le fichier advanced-cache.php manuellement via FTP, et dans wp-config.php trouvez et supprimez cette ligne:

1define('WP_CACHE', true);

Étape 3: Suppression des shortcodes du contenu

Les extensions qui ajoutent des shortcodes (formulaires, galeries, sliders, tableaux) laissent des [shortcode] à nu dans le texte des articles après suppression. C’est inesthétique et cela perturbe les lecteurs.

Un moyen rapide de faire taire les shortcodes inutilisés consiste à ajouter une ligne dans le fichier functions.php de votre thème actif:

1add_shortcode('pluginshortcode', '__return_false');
Code dans functions.php pour désactiver un shortcode d'extension

Remplacez pluginshortcode par l’étiquette de votre shortcode. Par exemple: nggallery, gravityform ou contact-form-7. La fonction __return_false renvoie false, et le shortcode disparaît du frontend sans être retiré du texte de l’article.

Ajoutez le code via un thème enfant ou l’extension Code Snippets; les modifications du fichier functions.php du thème parent seront perdues lors de la prochaine mise à jour. Si vous décidez de restaurer l’extension plus tard, supprimez simplement cette ligne.

Étape 4: Nettoyage de la base de données

L’étape la plus critique. Effectuez une sauvegarde complète de la base de données avant toute requête SQL de suppression; une exportation via phpMyAdmin prend une demi-minute et vous évite des erreurs irréversibles.

4a. Trouvez les tables de l’extension. Allez dans phpMyAdmin (via cPanel ou le panneau d’administration de votre hébergement), sélectionnez la base de données du site. Cherchez les tables avec le préfixe de l’extension: wp_wc_* (WooCommerce), wp_yoast_* (Yoast SEO), wp_wf* (Wordfence). Sélectionnez-les, choisissez «Supprimer» en bas → confirmez.

4b. Automatisation via Advanced Database Cleaner. Si vous préférez ne pas intervenir directement dans phpMyAdmin, installez Advanced Database Cleaner. Cette extension gratuite analyse la base de données, repère les tables et les enregistrements orphelins, et les supprime en un clic.

4c. Nettoyage de wp_options. Même si l'extension n'a pas créé de tables séparées, elle a presque certainement écrit dans wp_options. Exécutez ceci dans phpMyAdmin (onglet SQL):

1SELECT * FROM wp_options WHERE option_name LIKE '%pluginname%';

Remplacez pluginname par une partie du nom de l'extension. Vérifiez que les lignes appartiennent bien à l'extension supprimée, puis:

1DELETE FROM wp_options WHERE option_name LIKE '%pluginname%';

4d. Nettoyage des tâches cron. Certaines extensions enregistrent leurs propres événements cron. Installez WP Crontrol; il affiche toutes les tâches cron enregistrées dans une seule liste. Repérez les événements contenant le nom de l'extension et supprimez-les manuellement.

Spécificités de la suppression des plugins populaires

Chaque plugin majeur laisse une empreinte unique. Voici les instructions précises pour les plus courants.

WooCommerce

WooCommerce crée plus de 16 tables dans la base de données. Pour qu’elles soient nettoyées automatiquement lors de la suppression, ajoutez ceci dans wp-config.php (avant la ligne /* That's all, stop editing! */):

1define('WC_REMOVE_ALL_DATA', true);

Cette constante oblige WooCommerce à appeler son uninstall.php complet lors de la suppression; toutes les tables wp_woocommerce_* et wp_wc_* seront supprimées, y compris les produits, les commandes et les coupons. L’opération est irréversible, une sauvegarde est donc obligatoire.

Après avoir supprimé le plugin, vérifiez également wp_options, car WooCommerce y écrit des dizaines de lignes avec le préfixe woocommerce_:

1SELECT * FROM wp_options WHERE option_name LIKE '%wc_%';
Requête SQL pour trouver les enregistrements WooCommerce dans la base de données

Si des lignes sont trouvées et que le plugin est déjà supprimé, exécutez la requête DELETE avec la même condition.

Yoast SEO

Yoast SEO laisse des enregistrements dans wp_postmeta et wp_usermeta, ainsi que ses propres tables wp_yoast_indexable et wp_yoast_seo_links.

D’abord, nettoyez wp_postmeta:

1SELECT * FROM wp_postmeta WHERE meta_key LIKE '%yoast%';
Recherche des métadonnées SEO Yoast dans la table wp_postmeta

Après avoir confirmé qu’il s’agit bien de données Yoast, exécutez:

1DELETE FROM wp_postmeta WHERE meta_key LIKE '%yoast%';

Ensuite, wp_usermeta:

1SELECT * FROM wp_usermeta WHERE meta_key LIKE '%yoast%';
Recherche des enregistrements Yoast SEO dans la table wp_usermeta

Supprimez ce que vous trouvez avec une requête DELETE analogue. Yoast enregistre également l’événement cron wpseo_onpage_fetch; supprimez-le via WP Crontrol. Supprimez manuellement les tables wp_yoast_indexable et wp_yoast_seo_links via phpMyAdmin.

Akismet

Akismet est le plugin standard de protection contre les spams de commentaires, préinstallé avec WordPress. Après sa suppression, ses données restent dans wp_commentmeta:

1SELECT * FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';
Requête SQL pour trouver les données Akismet dans les commentaires

Ensuite:

1DELETE FROM wp_commentmeta WHERE meta_key LIKE '%akismet_%';

Si le site compte des milliers de commentaires, wp_commentmeta peut peser plusieurs dizaines de mégaoctets. Après le nettoyage, optimisez la table:

1OPTIMIZE TABLE wp_commentmeta;

Vous trouverez d’autres méthodes pour lutter contre le spam dans notre article comment stopper le spam des commentaires WordPress: les 18 solutions.

Gravity Forms

Gravity Forms crée 9 tables dans la base de données (wp_gf_*, wp_rg_*). Avant la suppression, allez dans Formulaires → Réglages → Désinstallation et confirmez. Supprimez ensuite l’extension depuis le tableau de bord.

Après la suppression, vérifiez wp_options:

1SELECT * FROM wp_options WHERE option_name LIKE '%gravity%' OR option_name LIKE '%gf_%';
Requête SQL pour nettoyer wp_options de Gravity Forms

Supprimez les lignes trouvées avec une requête DELETE analogue.

Wordfence

Wordfence est l’une des extensions de sécurité les plus «lourdes»: elle crée 23 tables avec le préfixe wp_wf*. La suppression standard via le tableau de bord ne les nettoie pas.

L’extension auxiliaire officielle Wordfence Assistant a été abandonnée par le développeur en décembre 2025. Nous nettoyons donc manuellement: supprimez l’extension Wordfence principale via le tableau de bord, puis allez dans phpMyAdmin et exécutez:

1SELECT * FROM wp_options WHERE option_name LIKE '%wordfence%' OR option_name LIKE '%wf%';

Supprimez les lignes trouvées avec une requête DELETE utilisant la même condition. Ensuite, trouvez et supprimez toutes les tables avec le préfixe wp_wf (il y en a généralement 23, de wp_wfblockediplog à wp_wflivetraffichuman). Via FTP, supprimez le dossier wp-content/wflogs/ et le fichier wordfence-waf.php à la racine du site s’ils sont encore présents.

L’extension crée 3 tables (wp_ngg_*) et un dossier wp-content/ngg/ contenant les galeries téléchargées.

Commencez par supprimer l’extension via le tableau de bord. Ensuite, via FTP, supprimez le dossier wp-content/ngg/, après avoir sauvegardé les images des galeries si vous en avez besoin. Dans phpMyAdmin, exécutez:

1SELECT * FROM wp_options WHERE option_name LIKE '%ngg%';

Supprimez les lignes trouvées avec une requête DELETE utilisant la même condition. Supprimez manuellement les tables wp_ngg_pictures, wp_ngg_galleries et wp_ngg_album.

EWWW Image Optimizer

EWWW stocke les données relatives à chaque image optimisée dans la table wp_ewwwio_images: chemin du fichier, taille d’origine, taille après compression. Il crée également un dossier wp-content/ewww/ avec du cache.

Supprimez le dossier via FTP. Ensuite, dans phpMyAdmin:

1SELECT * FROM wp_options WHERE option_name LIKE '%ewww%';
Requête SQL pour nettoyer les options de EWWW Image Optimizer

Supprimez ce que vous trouvez et supprimez la table wp_ewwwio_images.

WP All Export

Ce plugin crée 4 tables dans la base de données. Après la suppression via le tableau de bord, allez dans phpMyAdmin, trouvez les tables avec le préfixe wp_pmxe_*, sélectionnez-les et exécutez « Supprimer ». Vérifiez également dans wp_options la clé pmxe ; le plugin y stocke les paramètres du dernier export.

Plus de détails sur le cycle complet de suppression d’un plugin sont disponibles dans le tutoriel vidéo ci-dessous.

⁉️🤔 Questions fréquentes

Est-il sûr de supprimer directement les tables d’un plugin via phpMyAdmin ?

C’est sûr à deux conditions : vous avez fait une sauvegarde complète de la base de données et vous avez identifié avec certitude que les tables appartiennent à un plugin déjà supprimé. Les tables des plugins tiers ont toujours un préfixe reconnaissable : wp_wc_, wp_yoast_ ou wp_wf. Ne touchez pas aux tables système de WordPress (wp_posts, wp_options, wp_users, wp_comments, wp_postmeta et wp_usermeta) avec DROP ; vous pouvez seulement les nettoyer avec des DELETE sélectifs.

Que faire si le site affiche une page blanche après la suppression d’un plugin ?

Restaurez le plugin depuis la sauvegarde : uploadez le dossier via FTP, importez ses tables. La cause se trouve probablement dans le fichier functions.php du thème, où un appel à une fonction du plugin peut subsister sans solution de repli. Trouvez ces appels et encapsulez-les dans function_exists() ou supprimez-les, puis répétez la suppression du plugin.

Comment trouver toutes les traces d’un plugin dans la base de données ?

Installez le plugin Advanced Database Cleaner. Il analyse toutes les tables à la recherche de données orphelines et affiche une liste complète : tables, lignes dans wp_options et wp_postmeta, tâches cron. C’est plus rapide et plus sûr qu’une recherche manuelle dans phpMyAdmin.

Faut-il supprimer les plugins fournis en bundle avec le thème ?

Oui, si vous ne les utilisez pas. Les plugins fournis avec les thèmes (WPBakery Page Builder, Slider Revolution, ACF Pro) sont souvent assortis de licences limitées et ne reçoivent pas les mises à jour de sécurité. Un WPBakery désactivé et obsolète avec une vulnérabilité connue est une porte ouverte à une intrusion. Si vous ne l’utilisez pas, supprimez-le.

Puis-je restaurer un plugin après une suppression complète ?

Uniquement depuis une sauvegarde. Après le nettoyage des tables et de wp_options, tous les réglages du plugin sont définitivement perdus. C’est précisément pourquoi l’algorithme ci-dessus est construit du plus simple au plus radical : d’abord la suppression standard (réversible), puis le nettoyage des fichiers, et seulement à la fin la base de données. Parcourez les étapes de manière séquentielle ; ne passez pas directement à phpMyAdmin.

Les données d’un plugin subsistent-elles dans WordPress Multisite ?

Dans un Multisite, chaque sous-site a ses propres tables : wp_2_options, wp_2_postmeta, etc. Après avoir supprimé un plugin via le super administrateur, vérifiez les tables de chaque sous-site (wp_*_options et wp_*_postmeta pour tous les ID de blog). Le plugin a pu être activé sur des sites individuels du réseau et laisser des enregistrements dans leurs tables.

Conclusion : quand un nettoyage complet se justifie

Si vous avez un petit site et que vous supprimez un plugin une fois tous les six mois, une suppression standard via le tableau de bord accompagnée d’un nettoyage ponctuel de wp_options est suffisante.

Mais si votre site a plusieurs années, que des dizaines de plugins y sont passés et que les sauvegardes ont atteint un gigaoctet, un nettoyage chirurgical en suivant les instructions ci-dessus réduira sensiblement la base de données et accélérera l’administration. En pratique, nous avons nettoyé des milliers d’enregistrements orphelins dans wp_postmeta et des dizaines de tables inutiles, et le temps de réponse de l’interface d’administration a été réduit presque de moitié.

Prenez l’habitude : après avoir supprimé un plugin, parcourez la checklist (FTP → wp_options → cron → tables). Dix minutes aujourd’hui vous épargnent des heures demain, quand une base de données gonflée fait planter votre site en plein pic de trafic.

Quel plugin a laissé le plus de résidus après suppression sur votre site ? Dites-le-nous dans les commentaires.