Désinstaller WPML proprement et nettoyer la base WordPress

WPML est l’un des plugins multilingues les plus complets pour WordPress. Il gère les langues, les traductions, les chaînes, les menus, les taxonomies, WooCommerce, les jobs de traduction et parfois des intégrations avancées avec des services externes.

Cette puissance a une conséquence logique : quand vous désinstallez WPML, il peut rester beaucoup de données en base. Tables icl_, options, métadonnées, relations de traduction, chaînes traduites, jobs de traduction, réglages d’éditeur… ce n’est pas un petit plugin qui laisse deux miettes sous le tapis.

Voici comment désinstaller WPML proprement et nettoyer la base WordPress avec WP-CLI, sans supprimer des données au hasard.

Distingo, le livret à 2%

Avant de commencer : ne supprimez pas WPML à l’aveugle

Avant toute manipulation, clarifiez votre objectif. Voulez-vous :

  • supprimer WPML et garder uniquement la langue principale ;
  • supprimer WPML mais conserver les contenus traduits comme contenus séparés ;
  • repartir à zéro avec une nouvelle configuration WPML ;
  • migrer vers un autre plugin multilingue ;
  • nettoyer une base après une ancienne désinstallation incomplète ?

Ces scénarios ne demandent pas la même stratégie. Si vous supprimez les tables WPML, vous supprimez aussi les relations entre les traductions. Vos contenus peuvent rester dans wp_posts, mais WordPress ne saura plus qu’ils sont liés entre eux par langue.

Donc, avant de jouer au chirurgien SQL, commencez par une sauvegarde complète.

Sauvegarder la base et les fichiers

Exportez la base de données avec WP-CLI :

wp db export before-wpml-cleanup.sqlCode language: JavaScript (javascript)

Si vous travaillez en root :

wp db export before-wpml-cleanup.sql --allow-rootCode language: JavaScript (javascript)

Vérifiez que l’export existe et qu’il n’est pas vide :

ls -lh before-wpml-cleanup.sqlCode language: CSS (css)

Sauvegardez aussi les fichiers, surtout wp-content/plugins, wp-content/uploads et votre thème. WPML peut stocker des fichiers de traduction, des réglages liés aux plugins compagnons, et des médias traduits selon la configuration du site.

Sur un site WooCommerce, un site de production ou un gros site éditorial, faites d’abord cette procédure sur staging. C’est moins spectaculaire qu’un nettoyage direct en production, mais généralement meilleur pour la tension artérielle.

Méthode recommandée : utiliser le reset officiel de WPML

Si WPML est encore installé et accessible, utilisez d’abord sa procédure officielle de reset.

  1. Connectez-vous à l’administration WordPress.
  2. Allez dans WPML → Support.
  3. Cliquez sur le lien Troubleshooting.
  4. Descendez jusqu’à la section Reset.
  5. Cochez la confirmation indiquant que vous allez supprimer les données de traduction et de langue.
  6. Lancez Reset and deactivate WPML.

WPML indique que ce reset supprime les tables WPML de la base et désactive le plugin. Cette action ne peut pas être annulée. Faites donc la sauvegarde avant, pas après. Après, c’est de l’archéologie.

Ensuite, vous pouvez supprimer les plugins WPML depuis l’administration ou avec WP-CLI.

Supprimer les plugins WPML avec WP-CLI

Listez d’abord les plugins WPML installés :

wp plugin list | grep -i wpmlCode language: PHP (php)

Vous pouvez aussi chercher les plugins OnTheGoSystems, l’éditeur de chaînes ou les modules WooCommerce Multilingual :

wp plugin list | grep -Ei 'wpml|sitepress|woocommerce-multilingual|string-translation|translation-management'Code language: PHP (php)

Désactivez ensuite les plugins concernés. Les slugs exacts peuvent varier selon votre installation :

wp plugin deactivate sitepress-multilingual-cms
wp plugin deactivate wpml-string-translation
wp plugin deactivate wpml-translation-management
wp plugin deactivate woocommerce-multilingual

Puis supprimez-les si vous êtes sûr de ne plus les utiliser :

wp plugin delete sitepress-multilingual-cms
wp plugin delete wpml-string-translation
wp plugin delete wpml-translation-management
wp plugin delete woocommerce-multilingualCode language: JavaScript (javascript)

Si une commande échoue parce qu’un slug n’existe pas, ce n’est pas grave. Vérifiez les slugs réellement présents avec wp plugin list.

Auditer les tables WPML restantes

Après le reset officiel ou une désinstallation ancienne, vérifiez s’il reste des tables WPML.

wp db tables | grep '_icl_'Code language: JavaScript (javascript)

Sur un préfixe WordPress classique, vous pouvez trouver des tables comme :

wp_icl_translations
wp_icl_translation_status
wp_icl_translation_batches
wp_icl_translate
wp_icl_translate_job
wp_icl_strings
wp_icl_string_translations
wp_icl_string_packages
wp_icl_languages
wp_icl_languages_translations
wp_icl_locale_map
wp_icl_flags

La liste varie selon les modules installés : String Translation, Translation Management, WooCommerce Multilingual, Advanced Translation Editor, Media Translation, etc.

Pour connaître la taille des tables restantes :

wp db size --tables --human-readable | grep '_icl_'Code language: JavaScript (javascript)

Si le reset officiel a déjà supprimé les tables, cette commande ne retournera rien. C’est bon signe.

Supprimer les tables icl_ restantes

Si WPML est désinstallé, que vous avez validé la sauvegarde, et que vous ne voulez plus conserver les données WPML, vous pouvez supprimer les tables icl_ restantes.

Commencez par lister les tables concernées :

wp db tables | grep '_icl_'Code language: JavaScript (javascript)

Puis générez les commandes DROP TABLE pour les inspecter avant exécution :

wp db tables | grep '_icl_' | awk '{print "DROP TABLE IF EXISTS `" $1 "`;"}'Code language: JavaScript (javascript)

Si la liste est correcte, vous pouvez exécuter :

wp db tables | grep '_icl_' | awk '{print "DROP TABLE IF EXISTS `" $1 "`;"}' | wp db queryCode language: JavaScript (javascript)

Cette commande supprime uniquement les tables dont le nom contient _icl_. Elle tient compte du préfixe réel, car elle part de wp db tables.

Après suppression, vérifiez :

wp db tables | grep '_icl_'Code language: JavaScript (javascript)

Aucune table ne doit ressortir si le nettoyage est complet.

Distingo, le livret à 2%

Auditer les options WPML dans wp_options

WPML stocke aussi des réglages dans wp_options. Avant suppression, listez-les.

wp option list --field=option_name | grep -Ei 'wpml|icl|sitepress|translation'Code language: PHP (php)

Pour obtenir plus de détails, notamment la taille des options et leur statut autoload :

wp db query "
SELECT option_name, autoload, LENGTH(option_value) AS size
FROM $(wp db prefix)options
WHERE option_name REGEXP 'wpml|icl|sitepress|translation'
ORDER BY size DESC, option_name ASC;
"Code language: PHP (php)

Ne supprimez pas tout ce qui contient translation sans regarder. D’autres plugins peuvent utiliser ce terme. Il vaut mieux commencer par les options clairement liées à WPML.

Supprimer les options WPML clairement identifiées

Une fois WPML supprimé, vous pouvez nettoyer les options évidentes. Commencez par un affichage des options concernées :

wp db query "
SELECT option_name
FROM $(wp db prefix)options
WHERE option_name LIKE 'icl_%'
   OR option_name LIKE '_icl_%'
   OR option_name LIKE 'wpml_%'
   OR option_name LIKE '_wpml_%'
   OR option_name LIKE 'sitepress_%'
ORDER BY option_name ASC;
"Code language: PHP (php)

Si la liste est cohérente, supprimez ces options :

wp db query "
DELETE FROM $(wp db prefix)options
WHERE option_name LIKE 'icl_%'
   OR option_name LIKE '_icl_%'
   OR option_name LIKE 'wpml_%'
   OR option_name LIKE '_wpml_%'
   OR option_name LIKE 'sitepress_%';
"Code language: PHP (php)

Vous pouvez ensuite rechercher les reliquats plus larges :

wp option list --field=option_name | grep -Ei 'wpml|icl|sitepress'Code language: PHP (php)

Traitez les résultats restants un par un. Sur une base WordPress ancienne, les options résiduelles peuvent être liées à des addons, à des caches, ou à des plugins qui avaient une compatibilité WPML.

Nettoyer les métadonnées WPML

WPML et certains addons peuvent laisser des métadonnées dans wp_postmeta, wp_termmeta, wp_usermeta ou wp_commentmeta. Là encore, auditez avant de supprimer.

Dans wp_postmeta :

wp db query "
SELECT meta_key, COUNT(*) AS total
FROM $(wp db prefix)postmeta
WHERE meta_key REGEXP 'wpml|icl|sitepress'
GROUP BY meta_key
ORDER BY total DESC, meta_key ASC;
"Code language: PHP (php)

Dans wp_termmeta :

wp db query "
SELECT meta_key, COUNT(*) AS total
FROM $(wp db prefix)termmeta
WHERE meta_key REGEXP 'wpml|icl|sitepress'
GROUP BY meta_key
ORDER BY total DESC, meta_key ASC;
"Code language: PHP (php)

Dans wp_usermeta :

wp db query "
SELECT meta_key, COUNT(*) AS total
FROM $(wp db prefix)usermeta
WHERE meta_key REGEXP 'wpml|icl|sitepress'
GROUP BY meta_key
ORDER BY total DESC, meta_key ASC;
"Code language: PHP (php)

Si les clés sont clairement liées à WPML, vous pouvez les supprimer. Exemple pour wp_postmeta :

wp db query "
DELETE FROM $(wp db prefix)postmeta
WHERE meta_key REGEXP 'wpml|icl|sitepress';
"Code language: PHP (php)

Répétez seulement si vous avez vérifié les résultats pour les autres tables. Une suppression de métadonnées trop large peut enlever des réglages utiles d’un autre plugin compatible WPML. Le mot “compatibilité” cache parfois des surprises très collantes.

Supprimer les transients et caches liés à WPML

WPML peut laisser des transients ou caches temporaires. Vous pouvez d’abord supprimer les transients expirés :

wp transient delete --expiredCode language: JavaScript (javascript)

Pour rechercher les transients liés à WPML :

wp db query "
SELECT option_name, LENGTH(option_value) AS size
FROM $(wp db prefix)options
WHERE option_name LIKE '_transient%wpml%'
   OR option_name LIKE '_transient%icl%'
   OR option_name LIKE '_site_transient%wpml%'
   OR option_name LIKE '_site_transient%icl%'
ORDER BY size DESC;
"Code language: PHP (php)

Si WPML n’est plus installé, vous pouvez supprimer ces transients ciblés :

wp db query "
DELETE FROM $(wp db prefix)options
WHERE option_name LIKE '_transient%wpml%'
   OR option_name LIKE '_transient%icl%'
   OR option_name LIKE '_site_transient%wpml%'
   OR option_name LIKE '_site_transient%icl%';
"Code language: PHP (php)

Évitez de supprimer tous les transients sans raison. Sur certains sites, cela peut créer un pic de recalcul après purge.

Vérifier les tables WordPress natives après suppression

Supprimer WPML ne supprime pas nécessairement les contenus traduits dans wp_posts. Les traductions peuvent rester comme articles, pages, produits ou taxonomies séparés.

Listez les types de contenus présents :

wp post-type list --field=nameCode language: PHP (php)

Comptez les contenus publiés par type :

wp post list --post_type=post --post_status=publish --format=count
wp post list --post_type=page --post_status=publish --format=count
wp post list --post_type=product --post_status=publish --format=countCode language: PHP (php)

Si vous aviez plusieurs langues, vérifiez que vous ne publiez pas accidentellement des doublons, anciennes traductions ou pages devenues inutiles. C’est particulièrement important pour le SEO.

Que faire des contenus traduits ?

Après suppression de WPML, vous avez souvent trois options.

Option 1 : garder uniquement la langue principale

C’est la solution la plus simple. Vous supprimez ou dépubliez les contenus traduits, puis vous gardez les pages principales. Vérifiez ensuite les menus, les liens internes, les sitemaps et les redirections.

Option 2 : garder les traductions comme contenus indépendants

Vous pouvez conserver les traductions, mais elles ne seront plus liées par WPML. Il faudra alors gérer les slugs, menus, hreflang, URLs et éventuelles redirections manuellement ou via un autre système.

Option 3 : migrer vers un autre plugin multilingue

Dans ce cas, ne supprimez pas WPML trop tôt. La migration doit être préparée : inventaire des langues, contenus, taxonomies, médias, menus, traductions WooCommerce, slugs et URLs. Sinon, vous risquez de perdre les relations utiles avant la migration.

Vérifier les menus, widgets et blocs réutilisables

WPML peut gérer des menus par langue, des widgets traduits et des chaînes venant du thème ou des plugins. Après suppression, vérifiez les éléments visibles du site :

  • menus de navigation ;
  • footer ;
  • widgets ;
  • blocs réutilisables ou patterns ;
  • formulaires ;
  • templates de thème ;
  • pages WooCommerce ;
  • emails transactionnels ;
  • textes du thème.

Sur un site FSE, vérifiez aussi les templates et template parts dans l’éditeur de site. Sur un thème classique, contrôlez les widgets, menus et options de thème.

Vérifier les permaliens et les règles de réécriture

Après suppression de WPML, régénérez les permaliens :

wp rewrite flush --hard

Si vous n’avez pas accès au shell, allez dans Réglages → Permaliens, puis cliquez sur Enregistrer les modifications sans forcément changer la structure.

Testez ensuite plusieurs URLs :

  • la page d’accueil ;
  • un article ;
  • une page ;
  • une catégorie ;
  • une ancienne URL traduite ;
  • une fiche produit si WooCommerce est actif ;
  • le panier et le checkout.

Si vos anciennes URLs contenaient un préfixe de langue comme /en/, /fr/ ou /es/, préparez des redirections 301 vers les pages conservées.

Nettoyer les sitemaps et les balises hreflang

Après suppression de WPML, vérifiez vos sitemaps XML. Les anciennes URLs traduites ne doivent pas continuer à être listées si elles ne sont plus publiées ou accessibles.

Vérifiez aussi les balises hreflang. WPML gérait probablement ces balises pour indiquer les versions linguistiques aux moteurs de recherche. Si vous supprimez WPML, ces balises disparaissent ou doivent être reprises par un autre outil.

Dans Google Search Console, surveillez ensuite :

  • les erreurs 404 ;
  • les pages exclues ;
  • les anciennes URLs par langue ;
  • les sitemaps soumis ;
  • les canoniques choisies par Google ;
  • les éventuelles baisses de trafic international.

Une désinstallation WPML peut être techniquement propre et SEO catastrophique si les anciennes URLs ne sont pas redirigées. La base peut briller, mais le trafic peut tomber dans un trou. Mauvais échange.

Vérifier WooCommerce Multilingual

Si le site utilise WooCommerce, soyez encore plus prudent. WPML peut gérer les produits traduits, attributs, catégories produits, devises, emails et pages WooCommerce selon les modules installés.

Après désinstallation, testez au minimum :

  • les fiches produits ;
  • les catégories produits ;
  • les attributs ;
  • les variations ;
  • les prix ;
  • le panier ;
  • le checkout ;
  • les emails ;
  • les pages compte client ;
  • les anciennes URLs produits traduites.

Si vous utilisez plusieurs devises, ne supprimez pas WooCommerce Multilingual sans avoir remplacé cette fonctionnalité. Sinon, vous risquez de découvrir le problème au moment le plus WordPress possible : après la première commande client.

Optimiser la base après nettoyage

Une fois les tables et options WPML supprimées, optimisez la base :

wp db optimize

Vous pouvez aussi vérifier la taille des tables restantes :

wp db size --tables --human-readable

Si wp_options ou wp_postmeta restent très volumineuses, continuez l’audit. J’ai détaillé la méthode dans nettoyer et optimiser la base de données WordPress et identifier les options laissées par les plugins WordPress.

Commandes de contrôle après désinstallation

Voici une série de commandes utiles pour vérifier que WPML ne laisse pas de traces évidentes :

# Vérifier les plugins WPML restants.
wp plugin list | grep -Ei 'wpml|sitepress|woocommerce-multilingual|string-translation'

# Vérifier les tables WPML restantes.
wp db tables | grep '_icl_'

# Vérifier les options WPML restantes.
wp option list --field=option_name | grep -Ei 'wpml|icl|sitepress'

# Vérifier les métadonnées postmeta liées à WPML.
wp db query "
SELECT meta_key, COUNT(*) AS total
FROM $(wp db prefix)postmeta
WHERE meta_key REGEXP 'wpml|icl|sitepress'
GROUP BY meta_key
ORDER BY total DESC;
"

# Régénérer les permaliens.
wp rewrite flush --hard

# Optimiser la base.
wp db optimizeCode language: PHP (php)

Checklist de désinstallation WPML

  • Définir l’objectif : suppression totale, migration, ou reset.
  • Sauvegarder la base et les fichiers.
  • Tester la procédure sur staging.
  • Utiliser le reset officiel WPML si le plugin est encore accessible.
  • Désactiver et supprimer les plugins WPML.
  • Vérifier les tables icl_ restantes.
  • Supprimer les tables WPML seulement après validation.
  • Auditer les options wpml, icl et sitepress.
  • Nettoyer les métadonnées clairement liées à WPML.
  • Supprimer les transients ciblés.
  • Régénérer les permaliens.
  • Contrôler menus, widgets, templates, formulaires et WooCommerce.
  • Vérifier sitemaps, anciennes URLs, redirections et Search Console.
  • Optimiser la base après nettoyage.

Besoin d’aide pour désinstaller WPML proprement ?

Besoin d’un développeur WordPress pour nettoyer WPML ?

Supprimer WPML peut sembler simple, mais le vrai travail commence souvent après la désactivation : tables restantes, options autoloadées, contenus traduits, anciennes URLs, menus, WooCommerce, sitemaps et redirections.

J’interviens comme développeur WordPress et WooCommerce pour désinstaller WPML proprement, auditer la base, nettoyer les reliquats, préserver les contenus utiles et éviter les erreurs SEO après suppression des langues.

  • Audit des tables icl_, options WPML, métadonnées et transients.
  • Nettoyage WP-CLI sauvegardé, testé et documenté.
  • Vérification des contenus traduits, menus, médias et taxonomies.
  • Contrôle WooCommerce, produits traduits, variations et anciennes URLs.
  • Plan de redirections 301 et vérifications SEO après désinstallation.

Vous voulez supprimer WPML sans transformer votre base en champ de ruines multilingue ? Contactez-moi. Je vous aiderai à nettoyer WordPress proprement et à garder ce qui doit rester.

FAQ : désinstaller WPML et nettoyer la base

Peut-on simplement supprimer le plugin WPML ?

Vous pouvez le supprimer, mais cela ne garantit pas un nettoyage complet. WPML peut laisser des tables, options, métadonnées et contenus traduits. Utilisez d’abord le reset officiel si possible, puis auditez la base.

Le reset WPML supprime-t-il toutes les données ?

Le reset officiel supprime les tables WPML et désactive le plugin. Il ne faut pas le lancer sans sauvegarde, car l’action ne peut pas être annulée. Vérifiez ensuite les options et métadonnées restantes selon votre installation.

Les contenus traduits sont-ils supprimés avec WPML ?

Pas forcément. Les articles, pages ou produits traduits peuvent rester dans les tables WordPress natives. En revanche, les relations de traduction et la logique multilingue peuvent disparaître avec les tables WPML.

Puis-je supprimer toutes les tables icl_ ?

Oui, si vous avez sauvegardé le site, que WPML n’est plus utilisé, et que vous avez validé que ces tables ne sont plus nécessaires. Utilisez WP-CLI pour les lister, inspecter, puis supprimer.

Faut-il nettoyer wp_options après WPML ?

Oui, souvent. WPML peut laisser des options liées à icl, wpml ou sitepress. Auditez-les avant suppression, surtout si d’autres plugins compatibles WPML sont encore installés.

Que faire pour le SEO après suppression de WPML ?

Vérifiez les sitemaps, les anciennes URLs par langue, les balises hreflang, les redirections 301 et les erreurs 404 dans Google Search Console. Supprimer WPML sans gérer les URLs peut faire chuter le trafic international.

Sources

Demandez à l'IA son opinion
Gravatar for Matt Biscay

Je suis Matt Biscay, développeur WordPress & WooCommerce certifié chez Codeable, administrateur système et enseignant.

J’aide les entreprises à créer, optimiser et fiabiliser leurs sites WordPress avec une approche technique propre : performance, sécurité, maintenance, développement sur mesure et résolution de problèmes complexes.

Sur Skyminds, je partage des tutoriels WordPress, WooCommerce, Linux et administration système, avec des solutions testées sur des cas réels et pensées pour durer.

Découvrez mes services WordPress et WooCommerce.

Opinions