Supprimer les extensions Elementor ne suffit pas à retirer toutes leurs données. Elementor conserve notamment les structures de pages, réglages, modèles, kits, caches et préférences dans la base WordPress. Pour les éliminer sans casser le site, il faut d’abord reconstruire les contenus, sauvegarder la base, inventorier les données restantes, puis procéder à un nettoyage ciblé.
Cette procédure s’adresse aux sites qui ont définitivement quitté Elementor au profit de Gutenberg, GenerateBlocks, GeneratePress ou d’un autre constructeur. Elle utilise WP-CLI afin de travailler proprement avec le préfixe réel des tables WordPress.
Pourquoi Elementor laisse-t-il des données dans WordPress ?
Elementor stocke la structure et les réglages de chaque page dans des champs personnalisés de la table postmeta. Le contenu est enregistré sous forme de données JSON associées aux publications WordPress.
L’extension utilise également plusieurs autres emplacements :
- la table
optionspour ses réglages globaux, caches et tâches planifiées ; - la table
usermetapour les préférences des utilisateurs et notifications administratives ; - les tables
postsetpostmetapour les modèles, kits, popups, formulaires et éléments Theme Builder ; - les tables de taxonomies pour classer certains modèles ;
- le répertoire
wp-content/uploads/elementor/pour les CSS générées, polices, icônes et autres fichiers ; - les tâches WP-Cron et transients pour certains traitements temporaires.
La désinstallation classique conserve souvent ces données. Ce choix permet de réinstaller Elementor sans perdre immédiatement les mises en page.
Faut-il vraiment nettoyer la base après Elementor ?
Le nettoyage n’est pas toujours indispensable. Quelques options ou centaines de métadonnées orphelines ne ralentissent généralement pas WordPress de manière perceptible.
L’opération devient toutefois pertinente lorsque :
- Elementor ne sera définitivement plus utilisé ;
- toutes les pages ont été reconstruites et validées ;
- la base contient de nombreux modèles, révisions ou historiques Elementor ;
- vous souhaitez réduire la taille des sauvegardes ;
- vous préparez une migration ou une remise à plat technique ;
- vous voulez supprimer les anciennes options chargées automatiquement.
En revanche, ne nettoyez pas encore ces données si certaines pages utilisent toujours Elementor, même lorsqu’elles semblent correctes sur le front-end.
Avant le nettoyage : vérifier que le site ne dépend plus d’Elementor
Commencez par contrôler le site complet, et pas seulement sa page d’accueil. Elementor peut encore gérer des contenus moins visibles :
- en-têtes et pieds de page ;
- modèles d’articles et d’archives ;
- pages 404 et résultats de recherche ;
- popups ;
- formulaires Elementor Pro ;
- modèles WooCommerce ;
- pages de connexion ou de maintenance ;
- blocs enregistrés et modèles globaux.
Vérifiez aussi les contenus marqués comme ayant été modifiés avec Elementor :
wp db query "
SELECT
p.ID,
p.post_type,
p.post_status,
p.post_title
FROM $(wp db prefix)posts AS p
INNER JOIN $(wp db prefix)postmeta AS pm
ON pm.post_id = p.ID
WHERE pm.meta_key = '_elementor_edit_mode'
ORDER BY p.post_type, p.ID;
"Langage du code : PHP (php)
Cette requête ne prouve pas que la page dépend encore visuellement d’Elementor. Elle indique simplement qu’Elementor lui a associé des données.
1. Sauvegarder la base et les fichiers
Les commandes de cet article suppriment définitivement des données. Commencez donc par créer une sauvegarde SQL horodatée :
mkdir -p ~/backups
wp db export \
~/backups/before-elementor-cleanup-$(date +%F-%H%M%S).sql \
--add-drop-table
Vérifiez que le fichier existe et n’est pas vide :
ls -lh ~/backups/before-elementor-cleanup-*.sqlLangage du code : JavaScript (javascript)
Conservez aussi une sauvegarde du répertoire uploads/elementor si Elementor Pro a servi à ajouter des polices ou des icônes personnalisées.
La commande officielle wp db export utilise les identifiants définis dans wp-config.php. Elle évite donc de recopier le mot de passe MySQL dans le terminal.
2. Vider les fichiers et données générés depuis Elementor
Avant de désactiver Elementor, vous pouvez utiliser son outil de nettoyage interne :
- ouvrez Elementor > Editor > Home ;
- ouvrez Tools ;
- cliquez sur Clear Files & Data ;
- enregistrez les modifications.
Cette opération supprime principalement des caches et fichiers régénérables. Elle ne retire pas les structures de pages ni toutes les options enregistrées dans la base.
3. Désactiver et supprimer Elementor avec WP-CLI
Commencez par vérifier les extensions Elementor installées :
wp plugin list --search=elementorLangage du code : PHP (php)
Désactivez ensuite Elementor Pro avant Elementor gratuit :
wp plugin deactivate elementor-pro elementor
Puis supprimez leurs fichiers :
wp plugin delete elementor-pro elementorLangage du code : JavaScript (javascript)
Une extension déjà absente peut provoquer un avertissement sans gravité. Adaptez simplement la commande aux extensions réellement installées.
Exécutez WP-CLI avec l’utilisateur système propriétaire des fichiers du site. N’ajoutez --allow-root que dans un environnement où l’exécution en tant que root est réellement nécessaire, comme certains conteneurs.
4. Rechercher toutes les références à Elementor
Avant toute suppression, recherchez la chaîne elementor dans les tables WordPress :
wp db search elementor \
--all-tables-with-prefix \
--fields=table,column \
--statsLangage du code : JavaScript (javascript)
Cette commande fournit un inventaire, mais son résultat peut aussi contenir des références légitimes :
- anciens journaux ;
- contenus d’articles parlant d’Elementor ;
- options appartenant à des extensions tierces ;
- URLs ou noms de fichiers ;
- données de sauvegarde ou de migration.
Il ne faut donc jamais transformer cette recherche globale en un DELETE global. Nous allons nettoyer chaque catégorie séparément.
5. Supprimer les modèles et contenus elementor_library
Elementor stocke notamment ses modèles enregistrés dans le type de publication elementor_library.
Comptez d’abord les contenus concernés :
wp post list \
--post_type=elementor_library \
--post_status=any \
--format=countLangage du code : PHP (php)
Listez-les ensuite avec leurs identifiants et leurs statuts :
wp post list \
--post_type=elementor_library \
--post_status=any \
--fields=ID,post_title,post_status,post_date \
--format=tableLangage du code : PHP (php)
Lorsque vous avez confirmé leur suppression, récupérez leurs identifiants et transmettez-les à wp post delete :
ELEMENTOR_POST_IDS="$(
wp post list \
--post_type=elementor_library \
--post_status=any \
--format=ids
)"
if [ -n "${ELEMENTOR_POST_IDS}" ]; then
wp post delete ${ELEMENTOR_POST_IDS} --force
else
echo "Aucun contenu elementor_library trouvé."
fiLangage du code : PHP (php)
L’utilisation de l’API WordPress via wp post delete est préférable à un DELETE direct dans la table posts. WordPress peut ainsi retirer les métadonnées, commentaires, termes et révisions associés.
6. Inventorier les métadonnées Elementor
Elementor utilise principalement des clés commençant par _elementor_ ou elementor_. Affichez d’abord les clés et le nombre de lignes concernées :
wp db query "
SELECT
meta_key,
COUNT(*) AS row_count
FROM $(wp db prefix)postmeta
WHERE
LEFT(meta_key, 11) = '_elementor_'
OR LEFT(meta_key, 10) = 'elementor_'
GROUP BY meta_key
ORDER BY row_count DESC, meta_key;
"Langage du code : PHP (php)
Vous pourrez notamment rencontrer des clés comme :
_elementor_data;_elementor_edit_mode;_elementor_page_settings;_elementor_template_type;_elementor_version;_elementor_css;_elementor_conditions;_elementor_controls_usage.
La clé _elementor_data contient la structure complète des pages. Sa suppression rend impossible leur réouverture dans Elementor sans restaurer la sauvegarde.
7. Supprimer les postmeta Elementor
Une fois toutes les pages reconstruites et l’inventaire vérifié, supprimez les clés propres à Elementor :
wp db query "
DELETE FROM $(wp db prefix)postmeta
WHERE
LEFT(meta_key, 11) = '_elementor_'
OR LEFT(meta_key, 10) = 'elementor_';
"Langage du code : PHP (php)
Cette condition cible uniquement les clés qui commencent par les préfixes connus. Elle évite le très large et dangereux :
WHERE meta_key LIKE '%elementor%'Langage du code : JavaScript (javascript)
Le caractère _ possède aussi une signification particulière dans une expression SQL LIKE. L’utilisation de LEFT() évite ici toute ambiguïté.
8. Nettoyer les préférences Elementor dans usermeta
Elementor peut stocker des préférences, notifications et données d’introduction pour chaque utilisateur.
Inventoriez-les d’abord :
wp db query "
SELECT
meta_key,
COUNT(*) AS row_count
FROM $(wp db prefix)usermeta
WHERE
LEFT(meta_key, 11) = '_elementor_'
OR LEFT(meta_key, 10) = 'elementor_'
GROUP BY meta_key
ORDER BY row_count DESC, meta_key;
"Langage du code : PHP (php)
Puis supprimez-les :
wp db query "
DELETE FROM $(wp db prefix)usermeta
WHERE
LEFT(meta_key, 11) = '_elementor_'
OR LEFT(meta_key, 10) = 'elementor_';
"Langage du code : PHP (php)
9. Examiner les options Elementor avant de les supprimer
La table options demande davantage de prudence. Elle peut contenir des réglages Elementor, mais aussi des transients, tâches Action Scheduler ou références créées par des extensions complémentaires.
Commencez par lister les options dont le nom commence par un préfixe Elementor :
wp db query "
SELECT
option_name,
autoload,
LENGTH(option_value) AS value_bytes
FROM $(wp db prefix)options
WHERE
LEFT(option_name, 11) = '_elementor_'
OR LEFT(option_name, 10) = 'elementor_'
OR LEFT(option_name, 15) = '_transient_elem'
OR LEFT(option_name, 23) = '_site_transient_elementor'
ORDER BY value_bytes DESC, option_name;
"Langage du code : PHP (php)
Pour une vue plus large, sans suppression automatique :
wp db query "
SELECT
option_name,
autoload,
LENGTH(option_value) AS value_bytes
FROM $(wp db prefix)options
WHERE option_name LIKE '%elementor%'
ORDER BY value_bytes DESC, option_name;
"Langage du code : PHP (php)
Cette seconde requête sert uniquement à l’audit. N’utilisez pas directement la même condition dans une requête de suppression.
10. Supprimer les options et transients Elementor
Après vérification, supprimez les options commençant par les préfixes Elementor :
wp db query "
DELETE FROM $(wp db prefix)options
WHERE
LEFT(option_name, 11) = '_elementor_'
OR LEFT(option_name, 10) = 'elementor_';
"Langage du code : PHP (php)
Supprimez ensuite les transients Elementor identifiés :
wp db query "
DELETE FROM $(wp db prefix)options
WHERE
option_name LIKE '_transient_elementor%'
OR option_name LIKE '_transient_timeout_elementor%'
OR option_name LIKE '_site_transient_elementor%'
OR option_name LIKE '_site_transient_timeout_elementor%';
"Langage du code : PHP (php)
Dans ces motifs, les premiers caractères soulignés sont interprétés comme des jokers par SQL. Cependant, la combinaison reste suffisamment spécifique pour les transients WordPress Elementor. Vous pouvez préférer une sélection manuelle lorsque la base héberge des extensions Elementor tierces encore actives.
11. Rechercher les taxonomies Elementor
Listez les taxonomies dont le nom contient Elementor :
wp db query "
SELECT
taxonomy,
COUNT(*) AS row_count
FROM $(wp db prefix)term_taxonomy
WHERE taxonomy LIKE '%elementor%'
GROUP BY taxonomy
ORDER BY taxonomy;
"Langage du code : PHP (php)
Ne supprimez pas seulement les lignes de term_taxonomy. Cette méthode peut laisser des relations dans term_relationships et des termes inutilisés dans terms.
Après avoir supprimé les publications elementor_library, vérifiez si des relations orphelines subsistent :
wp db query "
SELECT COUNT(*) AS orphaned_relationships
FROM $(wp db prefix)term_relationships AS tr
LEFT JOIN $(wp db prefix)posts AS p
ON p.ID = tr.object_id
WHERE p.ID IS NULL;
"Langage du code : PHP (php)
Supprimez uniquement ces relations réellement orphelines :
wp db query "
DELETE tr
FROM $(wp db prefix)term_relationships AS tr
LEFT JOIN $(wp db prefix)posts AS p
ON p.ID = tr.object_id
WHERE p.ID IS NULL;
"Langage du code : PHP (php)
Pour les taxonomies Elementor restantes, commencez par enregistrer les identifiants et noms concernés. Leur structure peut varier selon les versions et extensions complémentaires. Une suppression universelle serait donc moins sûre qu’un nettoyage ciblé après inventaire.
12. Supprimer les fichiers générés par Elementor
Récupérez le chemin réel du répertoire des téléversements WordPress :
UPLOADS_DIR="$(
wp eval 'echo wp_get_upload_dir()["basedir"];'
)"
printf '%s\n' "${UPLOADS_DIR}"Langage du code : PHP (php)
Listez le contenu Elementor avant toute suppression :
du -sh -- "${UPLOADS_DIR}/elementor" 2>/dev/null
find "${UPLOADS_DIR}/elementor" -maxdepth 2 -type d 2>/dev/nullLangage du code : JavaScript (javascript)
Ce répertoire peut contenir davantage que des CSS temporaires. Vérifiez notamment la présence de polices, icônes ou fichiers personnalisés avant de le supprimer.
Lorsque vous avez confirmé qu’il n’est plus utile :
if [ -n "${UPLOADS_DIR}" ] && [ -d "${UPLOADS_DIR}/elementor" ]; then
rm -rf -- "${UPLOADS_DIR}/elementor"
fiLangage du code : JavaScript (javascript)
Cette commande reste destructive, mais elle limite le risque d’effacer le mauvais chemin. Elle vérifie que la variable n’est pas vide et que le répertoire Elementor existe réellement.
13. Vérifier les tâches planifiées Elementor
Recherchez les événements WP-Cron dont le hook contient Elementor :
wp cron event list \
--fields=hook,next_run_relative,recurrence \
--format=table |
grep -i elementorLangage du code : PHP (php)
Supprimez uniquement un hook dont vous avez confirmé l’origine :
wp cron event delete NOM_DU_HOOKLangage du code : JavaScript (javascript)
Évitez de fabriquer une commande automatique qui supprime tous les hooks correspondant à une recherche textuelle. Des extensions complémentaires encore actives pourraient les utiliser.
14. Examiner Action Scheduler
Elementor et certaines de ses extensions peuvent utiliser Action Scheduler. Vérifiez d’abord si la commande WP-CLI correspondante est disponible :
wp help action-scheduler 2>/dev/nullLangage du code : JavaScript (javascript)
Lorsqu’elle existe, recherchez les actions contenant Elementor :
wp action-scheduler action list \
--search=elementor \
--format=tableLangage du code : PHP (php)
La disponibilité et les sous-commandes dépendent de la version d’Action Scheduler installée. Inspectez les actions avant leur suppression. Les tâches terminées pourront aussi être purgées par les outils de maintenance de l’extension qui fournit Action Scheduler.
15. Optimiser les tables après le nettoyage
Une suppression SQL libère des lignes, mais ne réduit pas toujours immédiatement la taille physique des tables. Vous pouvez optimiser les tables WordPress :
wp db optimize
Cette opération peut verrouiller temporairement certaines tables selon le moteur, la version de MySQL ou MariaDB et l’infrastructure d’hébergement. Lancez-la pendant une période calme sur un gros site WooCommerce.
16. Vider les caches WordPress
Videz ensuite le cache objet WordPress :
wp cache flush
Pensez également à purger :
- le cache de page ;
- Redis ou Memcached ;
- le cache du serveur Nginx ou Varnish ;
- le CDN ;
- Cloudflare ;
- les fichiers optimisés par l’extension de performance.
17. Contrôler les données restantes
Relancez la recherche globale :
wp db search elementor \
--all-tables-with-prefix \
--fields=table,column \
--statsLangage du code : JavaScript (javascript)
Il est normal de retrouver encore le mot Elementor dans certains contenus, journaux ou données d’autres extensions. Analysez chaque résultat au lieu de chercher à obtenir artificiellement zéro occurrence.
Vérifiez aussi que les extensions ont bien disparu :
wp plugin list --search=elementorLangage du code : PHP (php)
Enfin, testez les parties essentielles du site :
- page d’accueil ;
- articles, pages et archives ;
- navigation mobile ;
- formulaires ;
- recherche et page 404 ;
- panier, commande et compte WooCommerce ;
- en-tête et pied de page ;
- pages mises en cache et utilisateurs connectés.
Script de nettoyage ciblé
Le script suivant regroupe les opérations les plus prévisibles. Lisez-le et testez chaque requête séparément avant de l’utiliser sur un site de production.
#!/usr/bin/env bash
set -Eeuo pipefail
BACKUP_DIR="${HOME}/backups"
BACKUP_FILE="${BACKUP_DIR}/before-elementor-cleanup-$(date +%F-%H%M%S).sql"
DB_PREFIX="$(wp db prefix)"
mkdir -p "${BACKUP_DIR}"
echo "Sauvegarde de la base..."
wp db export "${BACKUP_FILE}" --add-drop-table
echo "Suppression des contenus elementor_library..."
ELEMENTOR_POST_IDS="$(
wp post list \
--post_type=elementor_library \
--post_status=any \
--format=ids
)"
if [ -n "${ELEMENTOR_POST_IDS}" ]; then
wp post delete ${ELEMENTOR_POST_IDS} --force
fi
echo "Suppression des postmeta Elementor..."
wp db query "
DELETE FROM ${DB_PREFIX}postmeta
WHERE
LEFT(meta_key, 11) = '_elementor_'
OR LEFT(meta_key, 10) = 'elementor_';
"
echo "Suppression des usermeta Elementor..."
wp db query "
DELETE FROM ${DB_PREFIX}usermeta
WHERE
LEFT(meta_key, 11) = '_elementor_'
OR LEFT(meta_key, 10) = 'elementor_';
"
echo "Suppression des options Elementor..."
wp db query "
DELETE FROM ${DB_PREFIX}options
WHERE
LEFT(option_name, 11) = '_elementor_'
OR LEFT(option_name, 10) = 'elementor_';
"
echo "Suppression des transients Elementor..."
wp db query "
DELETE FROM ${DB_PREFIX}options
WHERE
option_name LIKE '_transient_elementor%'
OR option_name LIKE '_transient_timeout_elementor%'
OR option_name LIKE '_site_transient_elementor%'
OR option_name LIKE '_site_transient_timeout_elementor%';
"
echo "Suppression des relations de termes orphelines..."
wp db query "
DELETE tr
FROM ${DB_PREFIX}term_relationships AS tr
LEFT JOIN ${DB_PREFIX}posts AS p
ON p.ID = tr.object_id
WHERE p.ID IS NULL;
"
echo "Optimisation de la base..."
wp db optimize
echo "Purge du cache objet..."
wp cache flush
echo "Nettoyage terminé."
echo "Sauvegarde : ${BACKUP_FILE}"Langage du code : PHP (php)
Ce script ne supprime volontairement ni les taxonomies identifiées seulement par une recherche partielle, ni les tâches WP-Cron, ni les actions Action Scheduler. Ces données doivent être examinées au cas par cas.
Restaurer la base en cas de problème
Si une page, un réglage ou une fonctionnalité a disparu, restaurez immédiatement la sauvegarde :
wp db import \
~/backups/before-elementor-cleanup-AAAA-MM-JJ-HHMMSS.sqlLangage du code : JavaScript (javascript)
Purgez ensuite tous les caches. Vous pourrez alors identifier la suppression problématique et recommencer plus progressivement.
Ce nettoyage améliore-t-il les performances ?
Supprimer les anciennes données Elementor réduit surtout la taille et la complexité de la base. Le gain visible dépend du volume retiré et de la manière dont les options étaient chargées.
La suppression de plusieurs gigaoctets de révisions, historiques ou CSS inutiles peut accélérer les sauvegardes et migrations. En revanche, retirer trois options et quelques centaines de postmeta ne transformera pas magiquement le temps de réponse.
Pour diagnostiquer une réelle lenteur, il faut examiner les options autoloadées, les requêtes SQL, le cache objet, PHP, MySQL et les appels externes. Un audit WordPress apporte alors beaucoup plus qu’un nettoyage à l’aveugle.
Vous souhaitez quitter Elementor sans casser votre site ?
Une migration depuis Elementor demande davantage qu’une simple désinstallation. Il faut reconstruire les modèles, conserver le référencement, contrôler le responsive et nettoyer les anciennes données sans supprimer les contenus utiles.
- migration d’Elementor vers Gutenberg ou GenerateBlocks ;
- reconstruction des en-têtes, pieds de page et modèles ;
- nettoyage ciblé de la base WordPress ;
- optimisation des performances et Core Web Vitals ;
- contrôle technique avant et après la mise en ligne.
Présentez-moi votre projet de migration WordPress pour obtenir une procédure adaptée au site et à ses contenus.
Questions fréquentes
Désinstaller Elementor supprime-t-il les mises en page ?
La désactivation retire le rendu fourni par Elementor, mais les données de mise en page restent généralement dans la base. Les pages peuvent alors afficher leur contenu textuel sans conserver leur présentation d’origine.
Peut-on supprimer toutes les options contenant le mot Elementor ?
Non. Une recherche avec %elementor% peut aussi retrouver des données appartenant à d’autres extensions, des journaux ou du contenu éditorial. Il faut cibler les clés connues et examiner les autres résultats manuellement.
Peut-on revenir à Elementor après le nettoyage ?
Pas sans sauvegarde. La suppression de _elementor_data efface la structure JSON des pages. Réinstaller l’extension ne reconstruira pas automatiquement ces données.
Faut-il supprimer le répertoire uploads/elementor ?
Oui, lorsque le site n’utilise plus Elementor et que ce dossier ne contient aucune police, icône ou ressource encore nécessaire. Examinez son contenu avant de le supprimer.
Le nettoyage de la base accélère-t-il WordPress ?
Il peut réduire la taille des sauvegardes et supprimer certaines options autoloadées. Cependant, le gain de performance reste généralement faible lorsque le volume de données résiduelles est limité.
Peut-on réaliser le nettoyage avec phpMyAdmin ?
Oui, mais WP-CLI facilite la sauvegarde, détecte automatiquement le préfixe des tables et permet de supprimer les publications via l’API WordPress. Il réduit ainsi plusieurs risques liés aux requêtes manuelles.
Articles complémentaires
- Installer WP-CLI sans accès root
- Optimiser la vitesse d’un site WordPress
- Faire réaliser un audit WordPress complet
- Migrer un site WordPress sans interruption


