WP-CLI est l’outil en ligne de commande officiel de WordPress. Il permet de gérer un site complet sans navigateur : installer WordPress, mettre à jour plugins et thèmes, manipuler la base de données, gérer les utilisateurs et automatiser la maintenance. Disponible sur la plupart des hébergeurs modernes via SSH, WP-CLI remplace en quelques secondes des opérations qui prennent plusieurs minutes dans wp-admin.
Trop long ? Faites-le résumer par l'IA
La première fois que j’ai tapé wp plugin update --all dans un terminal, j’ai mis à jour 14 extensions en 3 secondes. Quatorze. Trois secondes. Dans wp-admin, la même opération me prenait une bonne minute — cliquer, attendre, recharger, recommencer. J’ai fermé l’onglet du navigateur et je ne l’ai jamais rouvert pour cette tâche.
WP-CLI, c’est ça. L’outil en ligne de commande officiel de WordPress. Pas un plugin, pas un hack, pas un gadget de développeur. Un projet projet officiel soutenu par la communauté WordPress, utilisé par les hébergeurs, les agences, et un nombre croissant de freelances qui en ont marre de cliquer.
Pourtant, en formation, quand je demande « qui utilise WP-CLI ? », c’est rarement plus de 2 mains sur 15 qui se lèvent. Le terminal fait peur. À tort.
Installer WP-CLI : 2 minutes, pas plus
Bonne nouvelle : si vous êtes chez un hébergeur correct (O2switch, Infomaniak, OVH, Kinsta, Cloudways), WP-CLI est déjà installé. Connectez-vous en SSH et tapez :
wp --info
Si vous voyez la version de WP-CLI s’afficher, c’est bon. Passez directement à la section suivante.
Si la commande n’est pas reconnue, l’installation manuelle prend littéralement 4 commandes :
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp --info
Sur Mac avec Homebrew, c’est encore plus simple : brew install wp-cli. Sous Windows, le plus fiable reste WSL (Windows Subsystem for Linux) — WP-CLI tourne nativement sous Linux, et essayer de le faire marcher sous CMD ou PowerShell, c’est s’infliger des souffrances inutiles.
En local avec Local by Flywheel, WP-CLI est intégré. Clic droit sur votre site → « Open Site Shell » et vous êtes dans le terminal avec WP-CLI prêt.
Les 20 commandes que j’utilise tous les jours
WP-CLI compte des centaines de commandes. Vous n’en utiliserez jamais plus de 30 au quotidien. Voici celles qui tournent dans mon terminal chaque semaine, classées par usage réel — pas par ordre alphabétique.
Plugins : arrêtez de cliquer un par un
# Lister tous les plugins avec leur statut
wp plugin list
# Mettre à jour TOUS les plugins d'un coup
wp plugin update --all
# Installer et activer un plugin
wp plugin install wordfence --activate
# Désactiver un plugin problématique (debug)
wp plugin deactivate elementor
# Supprimer un plugin et ses fichiers
wp plugin delete hello-dolly
L’avantage décisif par rapport à wp-admin : quand un plugin plante votre site et que vous n’avez plus accès au back-office, wp plugin deactivate nom-du-plugin vous sauve en 2 secondes. J’ai dépanné des dizaines de sites bloqués comme ça en formation.
Thèmes : même logique
# Lister les thèmes
wp theme list
# Activer un thème
wp theme activate astra
# Mettre à jour tous les thèmes
wp theme update --all
WordPress core : mises à jour sans stress
# Vérifier la version installée
wp core version
# Mettre à jour WordPress
wp core update
# Mettre à jour la base de données après MAJ
wp core update-db
# Vérifier l'intégrité des fichiers core
wp core verify-checksums
La commande wp core verify-checksums, je la lance systématiquement quand un client me signale un comportement bizarre. Elle compare chaque fichier du core avec la version officielle sur wordpress.org. Si un fichier a été modifié (hack, plugin mal codé, mauvaise manipulation), vous le savez immédiatement. En 15 ans de WordPress, cette commande m’a évité des heures de debug.
Base de données : le pouvoir brut
# Exporter la BDD complète
wp db export backup-2026-03.sql
# Importer une BDD
wp db import backup.sql
# Rechercher-remplacer (migration de domaine)
wp search-replace 'ancien-domaine.com' 'nouveau-domaine.com' --skip-columns=guid --all-tables --dry-run
# Vérifier l'intégrité des tables
wp db check
# Réparer les tables corrompues
wp db repair
# Optimiser les tables
wp db optimize
Le search-replace avec l’option --dry-run, c’est la commande que j’utilise systématiquement avant une migration. L’option --skip-columns=guid préserve les identifiants de vos flux RSS (sinon vos abonnés voient tous les articles comme « nouveaux »). Elle vous dit exactement combien de remplacements seront effectués, dans quelles tables, sans rien modifier. Quand tout est bon, vous relancez sans --dry-run et la migration se fait en quelques secondes. Pas de plugin de migration à 99$/an. Pas d’interface bancale. Juste une commande.
Sur wpformation.com, quand j’ai migré vers l’architecture headless (WordPress + Next.js), le search-replace a remplacé plus de 4 000 URLs en 8 secondes. Essayez de faire ça dans phpMyAdmin.
Astuce pro : chaînez les commandes avec && pour tout faire d’un coup. Mise à jour complète d’un site en une ligne :
wp core update && wp plugin update --all && wp theme update --all && wp cache flush
Si une commande échoue, les suivantes ne s’exécutent pas. Sécurité intégrée.
Utilisateurs et contenu
# Créer un administrateur (urgence)
wp user create fabrice fabrice@example.com --role=administrator
# Lister les admins
wp user list --role=administrator
# Changer un mot de passe
wp user update 1 --user_pass="nouveau-mot-de-passe"
# Supprimer les révisions (nettoyage BDD)
wp post delete $(wp post list --post_type=revision --format=ids) --force
# Vider le cache des transients
wp transient delete --all
La création d’admin en urgence, c’est la commande qui sauve quand un client a perdu ses accès. Pas besoin de toucher la base de données manuellement, pas besoin de phpMyAdmin. Une commande, un nouvel admin, problème réglé.
Cas concrets : quand WP-CLI devient indispensable
Dépannage d’un site planté
Écran blanc, erreur 500, wp-admin inaccessible. Scénario classique. Dans wp-admin, vous ne pouvez rien faire. Avec WP-CLI :
# Désactiver tous les plugins d'un coup
wp plugin deactivate --all
# Activer le thème par défaut
wp theme activate twentytwentyfive
# Activer le mode debug
wp config set WP_DEBUG true --raw
En 30 secondes, vous avez isolé le problème. Réactivez les plugins un par un pour trouver le coupable. C’est la méthode que j’enseigne en formation, et c’est celle que les développeurs WordPress utilisent depuis toujours.
Maintenance de masse
Vous gérez 5 sites WordPress ? 10 ? 20 ? La maintenance mensuelle dans wp-admin, c’est des heures. Avec WP-CLI, un script bash fait le travail :
#!/bin/bash
# Maintenance express pour un site WordPress
wp core update
wp core update-db
wp plugin update --all
wp theme update --all
wp transient delete --all
wp cache flush
wp db optimize
echo "Maintenance terminée."
Enregistrez ça dans un fichier maintenance.sh, lancez-le via un cron ou manuellement. Votre site est à jour, la base optimisée, le cache vidé. Temps : environ 15 secondes.
Migration de domaine sans plugin
La migration de domaine, c’est le cas d’usage où WP-CLI écrase tout le reste. Pas besoin de Duplicator, pas besoin de All-in-One WP Migration. Trois commandes :
# 1. Exporter la base
wp db export migration.sql
# 2. Remplacer toutes les URLs (gère la sérialisation PHP)
wp search-replace 'https://ancien-site.com' 'https://nouveau-site.com' --all-tables
# 3. Vider le cache
wp cache flush
Le point clé : search-replace gère nativement la sérialisation PHP. Si vous faites un rechercher-remplacer brut dans phpMyAdmin, vous cassez les données sérialisées (options, widgets, réglages de plugins). WP-CLI désérialise, remplace, re-sérialise. C’est la seule méthode fiable à 100%.
Si vous avez besoin de déplacer un site WordPress vers un nouveau domaine, WP-CLI transforme une opération de 45 minutes en 3 commandes.
WP-CLI pour le SEO et le contenu
WP-CLI ne sert pas qu’à la maintenance technique. Quelques commandes utiles pour le contenu et le référencement :
# Lister tous les articles publiés avec leur URL
wp post list --post_type=post --post_status=publish --fields=ID,post_title,post_name
# Compter les articles par catégorie
wp term list category --fields=name,count
# Régénérer tous les thumbnails (après changement de thème)
wp media regenerate --yes
# Exporter le contenu en XML (backup contenu)
wp export
Le wp media regenerate est un classique après un changement de thème. Si vous passez d’Elementor à un thème natif comme Astra, les tailles d’images ne correspondent plus. Cette commande regénère tous les thumbnails d’un coup. Sur un site avec 500 images, ça prend 2-3 minutes au lieu de le faire manuellement (spoiler : personne ne le fait manuellement).
Sécurité : les commandes que tout admin devrait connaître
Après 15 ans à sécuriser des sites WordPress, je peux dire que WP-CLI offre des outils puissants pour auditer et renforcer la sécurité d’un site :
# Vérifier l'intégrité des fichiers core
wp core verify-checksums
# Vérifier l'intégrité des plugins (depuis WP-CLI 2.9)
wp plugin verify-checksums --all
# Régénérer les sels de sécurité dans wp-config.php
wp config shuffle-salts
# Forcer la déconnexion de toutes les sessions
wp user session destroy admin --all
# Lister les utilisateurs admins (vérifier les intrus)
wp user list --role=administrator --fields=ID,user_login,user_email
Après un piratage, la séquence verify-checksums + shuffle-salts + session destroy est la première chose que je fais. Vérifier que les fichiers n’ont pas été modifiés, changer les clés de chiffrement, déconnecter tout le monde. Si vous avez besoin de réinitialiser complètement un WordPress compromis, WP-CLI est la méthode la plus rapide.
WP-CLI et les tâches planifiées
Le système de cron de WordPress (wp-cron) a un problème structurel : il ne se déclenche que quand quelqu’un visite le site. Sur un site à faible trafic, vos tâches planifiées ne s’exécutent pas. WP-CLI règle ça :
# Lister les événements cron
wp cron event list
# Exécuter tous les événements en attente
wp cron event run --all
# Tester le fonctionnement du cron
wp cron test
# Mode maintenance (activer/désactiver)
wp maintenance-mode activate
wp maintenance-mode deactivate
La vraie solution : désactiver wp-cron dans wp-config.php en ajoutant
define('DISABLE_WP_CRON', true); puis configurer un vrai cron système qui appelle wp cron event run --due-now toutes les 5 minutes. Sur wpformation.com, c’est comme ça que ça tourne. Pour aller plus loin, mon guide complet sur WP-Cron détaille toute la configuration.
Créer ses propres commandes WP-CLI
WP-CLI est extensible. Vous pouvez créer vos propres commandes pour automatiser des tâches spécifiques. Voici un exemple concret — une commande qui nettoie les révisions anciennes :
// Dans un mu-plugin ou functions.php
if (defined('WP_CLI') && WP_CLI) {
WP_CLI::add_command('wpf cleanup', function() {
// Supprimer les révisions de plus de 30 jours
global $wpdb;
$count = $wpdb->query(
"DELETE FROM {$wpdb->posts}
WHERE post_type = 'revision'
AND post_date < DATE_SUB(NOW(), INTERVAL 30 DAY)"
);
WP_CLI::success("$count révisions supprimées.");
// Optimiser la BDD
WP_CLI::runcommand('db optimize');
});
}
Ensuite, un simple wp wpf cleanup fait le ménage. C’est ce genre de petite automatisation qui fait gagner des heures sur l’année quand vous gérez plusieurs sites.
Attention : la commande wp db reset --yes efface intégralement votre base de données sans confirmation supplémentaire. Faites toujours un wp db export avant toute opération destructive. Une base perdue sans backup, c’est un site mort.
Les pièges à éviter
WP-CLI est puissant. Ce qui veut dire qu’il peut faire des dégâts si vous tapez la mauvaise commande. Quelques règles :
- Toujours
--dry-runavant un search-replace. Toujours. Même si vous êtes sûr de vous. J’ai vu un freelance remplacer « http » par « https » sans--dry-runet casser les données sérialisées de tout le site parce qu’il avait oublié le:// - Exporter la BDD avant toute opération destructive. Un
wp db exportprend 2 secondes. Un site cassé sans backup prend des heures à réparer - Vérifier que vous êtes dans le bon répertoire. WP-CLI travaille sur le WordPress du dossier courant. Si vous avez plusieurs sites sur le même serveur, un
pwdavant de taper quoi que ce soit - Ne jamais exécuter WP-CLI en root. Utilisez l’utilisateur du serveur web (www-data, apache) ou votre utilisateur hébergement
Astuce : ajoutez l’alias alias wpb='wp db export backup-$(date +%Y%m%d).sql' dans votre .bashrc. Un simple wpb crée un backup daté avant chaque intervention. Ça prend 5 secondes à configurer, ça peut sauver un site.
WP-CLI vs les plugins de maintenance : le vrai comparatif
La question revient souvent en formation : « pourquoi WP-CLI alors qu’il y a ManageWP, MainWP, InfiniteWP ? » Ce n’est pas un match. C’est complémentaire.
- ManageWP/MainWP : interface visuelle pour gérer 10-100 sites, rapports clients, monitoring. Idéal pour les agences. Mais c’est un SaaS payant avec ses limites
- WP-CLI : contrôle total, gratuit, scriptable, pas de dépendance externe. Mais demande un accès SSH et un minimum de confort avec le terminal
Mon approche : WP-CLI pour la maintenance technique quotidienne et le débogage. Un outil comme ManageWP pour la vision d’ensemble multi-sites et les rapports. Les deux ensemble, c’est le combo gagnant.
Aide-mémoire : les commandes WP-CLI par catégorie
Ce tableau récapitule les commandes les plus utiles. Gardez-le sous la main — c’est la seule page que vous aurez besoin de bookmarker.
| Catégorie | Commande | Ce qu’elle fait |
|---|---|---|
| Plugins | wp plugin update --all | Met à jour tous les plugins |
wp plugin deactivate nom | Désactive un plugin (debug) | |
| Core | wp core update | Met à jour WordPress |
wp core verify-checksums | Vérifie l’intégrité des fichiers | |
| BDD | wp db export backup.sql | Sauvegarde la base de données |
wp search-replace old new | Rechercher-remplacer (migration) | |
| Users | wp user create login email | Crée un utilisateur |
wp user session destroy admin --all | Déconnecte toutes les sessions | |
| Sécurité | wp config shuffle-salts | Régénère les clés de sécurité |
wp plugin verify-checksums --all | Vérifie l’intégrité des plugins | |
| Contenu | wp media regenerate --yes | Regénère les thumbnails |
wp transient delete --all | Vide le cache transients | |
| Cron | wp cron event run --due-now | Exécute les tâches planifiées |
Ressources pour aller plus loin
- Documentation officielle : developer.wordpress.org/cli/commands — la référence complète de toutes les commandes
- WP-CLI Handbook : make.wordpress.org/cli/handbook — guides d’installation, configuration, contribution
- Packages communautaires : wp-cli/package-index sur GitHub — des centaines de commandes additionnelles
Mon conseil : ne cherchez pas à tout apprendre d’un coup. Commencez par wp plugin update --all et wp db export. Dès que ces deux commandes deviennent un réflexe, vous ne voudrez plus toucher à wp-admin pour ces tâches. Le reste viendra naturellement.
WP-CLI ne rend pas wp-admin obsolète. Il rend les tâches répétitives obsolètes. Et dans un métier où on passe un temps déraisonnable à cliquer sur « Mettre à jour » et à attendre que la page recharge, c’est un gain qui s’accumule chaque semaine.
Questions fréquentes
WP-CLI fonctionne-t-il sur un hébergement mutualisé ?
Oui, si l’hébergeur fournit un accès SSH. C’est le cas chez O2switch, Infomaniak, PlanetHoster et la plupart des hébergeurs français sérieux. Chez certains hébergeurs low-cost (LWS basique, certains plans OVH), l’accès SSH n’est pas inclus — vérifiez avant de souscrire.
WP-CLI peut-il casser mon site ?
Comme tout outil puissant, oui. Un wp db reset sans backup efface la base de données complète. Un search-replace mal paramétré peut corrompre les données sérialisées. La règle d’or : wp db export avant toute opération destructive, et --dry-run avant tout search-replace.
Faut-il être développeur pour utiliser WP-CLI ?
Non. Les commandes de base (wp plugin update --all, wp db export, wp core version) sont aussi simples que de taper une URL dans un navigateur. En formation, mes stagiaires non-techniques utilisent WP-CLI dès le deuxième jour. Le plus dur, c’est d’oser ouvrir le terminal.
WP-CLI fonctionne-t-il avec un WordPress multisite ?
Oui, nativement. Ajoutez --url=sous-site.example.com pour cibler un sous-site spécifique, ou --network pour les opérations réseau. La gestion multisite est même l’un des domaines où WP-CLI est le plus utile — gérer 50 sous-sites via wp-admin, personne ne veut faire ça.
Comment mettre à jour WP-CLI lui-même ?
Avec la commande wp cli update. Si vous avez installé via Homebrew : brew upgrade wp-cli. Sur un serveur, l’hébergeur gère généralement les mises à jour. Vérifiez votre version avec wp cli version — la version 2.12+ est recommandée en 2026.
Résumez ou partagez cet article

