WP-CLI est l’outil en ligne de commande officiel de WordPress. Il permet d’installer, mettre à jour, sauvegarder et administrer un site WordPress entier sans jamais ouvrir un navigateur. Avec plus de 40 commandes natives, c’est l’arme secrète des freelances, admins et développeurs qui gèrent un ou cinquante sites.
Pas le temps ? Faites-le analyser par l'IA
Gérer WordPress depuis un terminal, ça change tout. Pas de page qui rame, pas de timeout sur une mise à jour de 47 plugins, pas de clic-clic-clic dans un tableau de bord surchargé. Une commande, Entrée, c’est fait.
J’utilise WP-CLI quotidiennement depuis 2015, que ce soit pour administrer wpformation.com, gérer les sites de mes clients en formation ou automatiser des tâches répétitives sur les serveurs. En tant que co-créateur de WPS Hide Login (2M+ installations) et fondateur de WPServeur, j’ai eu l’occasion de scripter des centaines d’opérations avec cet outil… et de découvrir ses pièges à la dure.
Ce guide couvre tout : de l’installation à la création de vos propres commandes, en passant par les 30+ commandes que vous utiliserez vraiment. Pas de blabla, que du concret.
Qu’est-ce que WP-CLI et pourquoi s’y mettre ?
WP-CLI (WordPress Command Line Interface) est l’interface en ligne de commande officielle de WordPress. Le projet a été lancé en 2011 par Andreas Creten, puis repris et propulsé par Daniel Bachhuber. Depuis 2017, c’est un projet officiel WordPress.org, maintenu par la communauté.
Pourquoi lâcher le tableau de bord pour un terminal noir ? Cinq raisons concrètes :
La vitesse, d’abord. Mettre à jour 30 plugins via wp-admin prend 3 à 5 minutes (si le serveur ne timeout pas). En CLI : wp plugin update --all, 15 secondes. Terminé.
L’automatisation, ensuite. Vous gérez 10 sites WordPress ? Un script bash qui boucle sur vos installations et lance les mises à jour, les backups, les vérifications de sécurité… tout ça pendant que vous prenez votre café.
Le dépannage sans accès admin. Site planté ? Écran blanc ? Plugin vérolé qui bloque tout ? Avec WP-CLI, vous désactivez le coupable en SSH sans jamais toucher au navigateur. Ça m’a sauvé plus d’une fois en pleine formation.
Les migrations propres. Un wp search-replace bien ficelé fait en 10 secondes ce qu’un plugin de migration met 5 minutes à faire (quand il ne plante pas à mi-chemin).
Et c’est pas fini… WP-CLI permet aussi de gérer les utilisateurs, le contenu, les options, la base de données, les tâches cron, et même de diagnostiquer les problèmes de performance. Bref, tout ce que vous faites dans wp-admin, mais en mieux.
Pour qui ? Si vous êtes freelance, administrateur système, développeur WordPress, ou simplement quelqu’un qui gère plus de 2 sites, WP-CLI va vous faire gagner des heures chaque semaine. Pas besoin d’être un expert du terminal pour commencer.
Comment installer WP-CLI ?
Ce qu’il faut avant de commencer
Pour utiliser WP-CLI, il vous faut trois choses :
- Un accès SSH à votre serveur (c’est le tunnel sécurisé qui vous connecte au terminal distant)
- PHP 5.6 minimum (mais franchement, en 2026, visez PHP 8.1+)
- Un terminal : Terminal sur Mac/Linux, WSL ou PowerShell sur Windows
Bonne nouvelle si vous êtes chez un hébergeur français : la quasi-totalité des hébergeurs sérieux supportent WP-CLI nativement. O2switch (celui que j’utilise pour wpformation.com), Infomaniak, OVH, LWS, PlanetHoster… tous proposent un accès SSH avec WP-CLI pré-installé. Vérifiez dans votre espace client ou demandez au support.
Installer WP-CLI en 2 minutes
Si WP-CLI n’est pas déjà présent sur votre serveur, l’installation tient en 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 cli info
La dernière commande affiche la version installée, le chemin PHP, et confirme que tout fonctionne. Si vous voyez un bloc d’informations, c’est bon.
Variante Composer (pour les développeurs) :
composer global require wp-cli/wp-cli-bundle
Variante Docker :
docker run -it --rm wordpress:cli wp cli info
Mettre à jour WP-CLI
Comme tout bon outil, WP-CLI se met à jour tout seul :
wp cli update
wp cli version
Je recommande de vérifier la version au moins une fois par trimestre. Les nouvelles versions corrigent des bugs et ajoutent le support des dernières versions de WordPress.
Comment installer WordPress en ligne de commande ?
C’est probablement le use case le plus spectaculaire. Là où l’installation classique demande de télécharger un zip, le décompresser, uploader via FTP, créer la base de données, lancer l’installateur… WP-CLI fait tout ça en 6 commandes. Chrono : 90 secondes.
Télécharger et configurer
# Télécharger WordPress en français
wp core download --locale=fr_FR
# Générer le fichier wp-config.php
wp config create --dbname=ma_base --dbuser=mon_user --dbpass=mon_mdp --dbhost=localhost
# Créer la base de données
wp db create
Lancer l’installation
wp core install --url="https://monsite.com" --title="Mon Site WordPress" --admin_user=admin --admin_password=MotDePasseForT! --admin_email=contact@monsite.com
Voilà. WordPress est installé, configuré, prêt à l’emploi. Pas de formulaire, pas de navigateur.
Pour un multisite, remplacez wp core install par :
wp core multisite-install --url="https://monsite.com" --title="Mon Réseau" --admin_user=admin --admin_password=MotDePasseForT! --admin_email=contact@monsite.com
Premiers réglages post-installation
Enchaînez directement avec les réglages de base :
# Permaliens propres
wp rewrite structure '/%postname%/' --hard
# Langue française
wp language core install fr_FR --activate
# Description du site
wp option update blogdescription "Ma description de site"
# Fuseau horaire
wp option update timezone_string "Europe/Paris"
# Supprimer le contenu par défaut
wp post delete 1 --force
wp post delete 2 --force
Conseil : Copiez ce bloc de commandes dans un fichier setup.sh et réutilisez-le à chaque nouvelle installation. En 90 secondes, vous avez un WordPress propre, configuré, en français. On l’oublie trop souvent, mais ce genre de script fait gagner un temps fou quand on installe WordPress régulièrement.
Quelles sont les commandes WP-CLI indispensables ?
Plugins : arrêtez de cliquer un par un
C’est là que WP-CLI brille le plus. Gérer les extensions depuis le terminal, c’est incomparablement plus rapide qu’en passant par wp-admin.
# Installer et activer un plugin
wp plugin install wordfence --activate
# Mettre à jour TOUS les plugins d'un coup
wp plugin update --all
# Vérification avant mise à jour (dry-run)
wp plugin update --all --dry-run
# Lister les plugins avec leur statut
wp plugin list
# Désactiver un plugin problématique
wp plugin deactivate elementor
# Supprimer un plugin
wp plugin delete hello-dolly
# Rechercher un plugin sur WordPress.org
wp plugin search "cache" --per-page=5 --fields=name,slug,rating
Attention : Utilisez toujours --dry-run avant un update --all en production. Ça affiche ce qui VA être mis à jour sans rien toucher. J’ai vu trop de sites cassés par une mise à jour lancée à l’aveugle.
Thèmes : même logique
# Installer et activer un thème
wp theme install astra --activate
# Lister les thèmes installés
wp theme list
# Mettre à jour tous les thèmes
wp theme update --all
# Vérifier le thème actif
wp theme status
On ne va pas y passer trois heures. Les commandes thèmes sont le miroir exact des commandes plugins. install, activate, delete, update, list, status. Si vous savez gérer les plugins en CLI, vous savez gérer les thèmes.
WordPress core : mises à jour sans stress
# Vérifier si une mise à jour est disponible
wp core check-update
# Mettre à jour WordPress
wp core update
# Mettre à jour la base de données après un saut de version
wp core update-db
# Vérifier la version installée
wp core version
Mon workflow de mise à jour en production :
wp db export backup-avant-maj.sql
wp core update
wp core update-db
wp plugin update --all
wp core verify-checksums
Backup, mise à jour, vérification. Dans cet ordre. Toujours.
Utilisateurs
# Créer un utilisateur
wp user create jean jean@example.com --role=editor --user_pass=MotDePasse123!
# Lister les administrateurs
wp user list --role=administrator
# Changer le mot de passe d'un utilisateur
wp user update 1 --user_pass=NouveauMotDePasse!
# Supprimer un utilisateur et réattribuer ses contenus
wp user delete 5 --reassign=1
Pratique quand un client vous appelle en panique parce qu’il a oublié son mot de passe admin et que la récupération par email ne fonctionne pas. wp user update et c’est réglé en 10 secondes. Pour aller plus loin sur la gestion des accès, consultez aussi mon article sur les backups WordPress qui couvre la protection des données utilisateurs.
Comment gérer la base de données WordPress en CLI ?
Export et import
# Export complet
wp db export backup.sql
# Export sélectif (certaines tables seulement)
wp db export backup-posts.sql --tables=wp_posts,wp_postmeta
# Import
wp db import backup.sql
Un wp db export avant chaque opération risquée. C’est la règle numéro un. Pas de filet de sécurité, pas de manip en base.
Search-replace : la commande reine
C’est LA commande qui justifie à elle seule l’installation de WP-CLI. Changer un nom de domaine, passer de HTTP à HTTPS, corriger une URL en masse… tout ça en une ligne.
# Simulation d'abord (TOUJOURS)
wp search-replace 'ancien-domaine.com' 'nouveau-domaine.com' --dry-run
# Exécution réelle
wp search-replace 'ancien-domaine.com' 'nouveau-domaine.com' --skip-columns=guid
# Passage HTTP → HTTPS
wp search-replace 'http://monsite.com' 'https://monsite.com' --skip-columns=guid
Important : Le --dry-run n’est pas optionnel. C’est obligatoire. Lancez TOUJOURS la simulation avant l’exécution réelle. Un search-replace mal ciblé sur une base de données, c’est le genre d’erreur qu’on ne corrige pas facilement. Le --skip-columns=guid évite de casser les identifiants uniques des contenus.
Optimisation et nettoyage
# Optimiser les tables
wp db optimize
# Réparer les tables corrompues
wp db repair
# Supprimer tous les transients expirés
wp transient delete --all
# Supprimer toutes les révisions d'articles
wp post delete $(wp post list --post_type=revision --format=ids) --force
# Compter les révisions avant de les supprimer
wp post list --post_type=revision --format=count
Sur wpformation.com (340+ articles), la purge des révisions libère régulièrement 50 à 100 Mo de base de données. Ça se sent sur les performances.
Comment modifier les options WordPress sans wp-admin ?
La commande wp option est celle que j’utilise le plus souvent en dépannage. Elle donne accès à toutes les options stockées dans la table wp_options, sans passer par l’interface d’administration.
# Vérifier l'URL du site
wp option get siteurl
wp option get home
# Modifier l'URL (utile après migration)
wp option update siteurl "https://nouveau-domaine.com"
wp option update home "https://nouveau-domaine.com"
# Vérifier le format des permaliens
wp option get permalink_structure
# Voir les plugins actifs (liste sérialisée)
wp option get active_plugins --format=json
# Changer le thème actif sans passer par wp-admin
wp option update template "astra"
wp option update stylesheet "astra"
# Désactiver les commentaires sur tout le site
wp option update default_comment_status "closed"
Quand c’est vraiment utile ? Quand le site est cassé et que wp-admin ne charge plus. Un wp option get siteurl vous dit immédiatement si l’URL est corrompue. Un wp option update la corrige en une seconde. J’ai sauvé des dizaines de sites en formation avec cette seule commande.
Autre cas classique : vous migrez un site, le frontend affiche "localhost" ou une vieille URL. Un coup de wp option update home et c’est réglé, sans chercher dans phpMyAdmin.
Attention : La table wp_options contient des données sérialisées. Pour modifier ces valeurs, utilisez wp search-replace plutôt que wp option update directement, sinon vous risquez de casser la sérialisation PHP.
Permaliens et réécriture
Les problèmes de permaliens sont le motif de support #1 après une migration ou un changement de thème. WP-CLI règle ça en une commande.
# Vider le cache de réécriture (fix 404 après migration)
wp rewrite flush --hard
# Vérifier la structure actuelle
wp rewrite list --match="/mon-article/"
# Définir la structure des permaliens
wp rewrite structure '/%postname%/' --hard
Le --hard régénère aussi le fichier .htaccess (ou la config Nginx). Sans ce flag, seules les règles en base de données sont mises à jour, ce qui ne suffit pas toujours.
Le scénario typique : vous changez de thème, toutes les pages internes renvoient du 404. Pas de panique. Un wp rewrite flush --hard et 9 fois sur 10, le problème disparaît. Si ça persiste, c’est probablement un conflit de plugin ou un .htaccess corrompu.
Médias et images
Vous venez de changer de thème et toutes vos miniatures sont aux mauvaises dimensions ? wp media regenerate règle le problème en quelques minutes, là où un plugin mettrait une éternité (quand il ne timeout pas).
# Régénérer TOUTES les miniatures
wp media regenerate
# Régénérer uniquement les miniatures manquantes
wp media regenerate --only-missing
# Importer une image depuis une URL
wp media import https://example.com/image.jpg --title="Mon image"
# Lister les tailles d'images enregistrées
wp media image-size
Le --only-missing est votre ami. Il ne retouche que ce qui manque, sans écraser les miniatures existantes. Beaucoup plus rapide sur un site avec des milliers de médias.
Un cas concret que je rencontre souvent en formation : un client change de thème, et toutes ses images s’affichent mal (mauvaises dimensions, recadrages bizarres). La raison ? Le nouveau thème définit des tailles d’images différentes, mais les miniatures existantes gardent les anciennes dimensions. Un wp media regenerate recalcule tout d’un coup. Sur wpformation.com (1 200+ images), l’opération prend environ 4 minutes. Via un plugin comme Regenerate Thumbnails, comptez plutôt 15 à 20 minutes avec les timeouts.
Contenu : posts, pages et taxonomies
Gérer les articles
# Créer un brouillon
wp post create --post_title="Mon nouvel article" --post_status=draft --post_type=post
# Lister les articles publiés
wp post list --post_type=post --post_status=publish --fields=ID,post_title,post_date
# Lister les pages
wp post list --post_type=page --post_status=publish
# Modifier un titre
wp post update 123 --post_title="Nouveau titre"
# Supprimer définitivement un article
wp post delete 123 --force
Catégories et tags
# Lister les catégories
wp term list category
# Créer une catégorie
wp term create category "Tutoriels" --slug=tutoriels
# Renommer un tag
wp term update post_tag 42 --name="WordPress"
Menus de navigation
# Lister les menus
wp menu list
# Créer un menu
wp menu create "Menu Principal"
# Ajouter un article au menu
wp menu item add-post "Menu Principal" 123
# Ajouter un lien personnalisé
wp menu item add-custom "Menu Principal" "Blog" https://monsite.com/blog/
Bon. Honnêtement, pour la gestion de contenu au quotidien, le tableau de bord reste plus pratique. Mais quand vous devez faire du bulk (supprimer 200 brouillons, réattribuer des catégories en masse, nettoyer des tags orphelins), WP-CLI est imbattable.
Quand WP-CLI sauve la mise ? Cas concrets
Site planté : plus d’accès admin
Scénario classique : vous activez un plugin, écran blanc. Plus rien ne répond. Pas de panique.
# Se connecter en SSH et aller dans le répertoire WordPress
cd /home/user/public_html
# Désactiver TOUS les plugins d'un coup
wp plugin deactivate --all
# Ou cibler le coupable si vous le connaissez
wp plugin deactivate nom-du-plugin
# Réactiver le thème par défaut
wp theme activate twentytwentyfive
# Vérifier que le site répond
wp option get siteurl
# Désactiver le mode maintenance
wp maintenance-mode deactivate
En 30 secondes, votre site est de nouveau accessible. Sans toucher à phpMyAdmin, sans renommer des dossiers en FTP, sans prier.
Migration de domaine sans plugin
Vous déménagez votre site vers un nouveau domaine ? Voici le workflow complet :
# 1. Backup
wp db export pre-migration.sql
# 2. Simulation
wp search-replace 'ancien-site.fr' 'nouveau-site.com' --dry-run
# 3. Exécution
wp search-replace 'ancien-site.fr' 'nouveau-site.com' --skip-columns=guid
# 4. HTTPS si nécessaire
wp search-replace 'http://nouveau-site.com' 'https://nouveau-site.com' --skip-columns=guid
# 5. Vider les caches
wp cache flush
wp rewrite flush
Quatre étapes, zéro plugin. J’ai un guide complet sur la migration WordPress si vous voulez les détails de chaque étape.
Maintenance de masse
Quand tu gères plusieurs sites, un simple script bash fait des miracles :
#!/bin/bash
SITES=("/home/site1/public_html" "/home/site2/public_html" "/home/site3/public_html")
for site in "${SITES[@]}"; do
echo "=== Maintenance: $site ==="
wp --path="$site" db export "$site/backup-$(date +%Y%m%d).sql"
wp --path="$site" plugin update --all
wp --path="$site" core update
wp --path="$site" core verify-checksums
echo "--- Terminé ---"
done
Ce script sauvegarde, met à jour les plugins, met à jour WordPress et vérifie l’intégrité des fichiers core. Pour chaque site. Automatiquement. Ça vous parle ?
Comment utiliser WP-CLI pour le SEO ?
WP-CLI n’est pas un outil SEO à proprement parler, mais il ouvre des possibilités intéressantes pour auditer et nettoyer votre contenu en masse.
# Exporter tous les articles avec leurs métadonnées
wp post list --post_type=post --post_status=publish --fields=ID,post_title,post_name,post_date,post_modified --format=csv > articles.csv
# Trouver les articles sans excerpt
wp post list --post_status=publish --format=ids | xargs -I {} sh -c 'excerpt=$(wp post meta get {} _yoast_wpseo_metadesc 2>/dev/null); [ -z "$excerpt" ] && echo "ID {} : pas de meta description"'
# Nettoyer les slugs en masse
wp post list --post_status=publish --fields=ID,post_name --format=table
# Vider le cache de réécriture (après modification de permaliens)
wp rewrite flush
Combiner WP-CLI avec des scripts d’export CSV, c’est redoutable pour identifier les articles sans meta description, les slugs trop longs, ou les contenus obsolètes. J’utilise ça régulièrement sur wpformation.com pour mes audits de contenu.
Quelles commandes WP-CLI pour sécuriser WordPress ?
Même si il ne fait pas (encore) le café, une chose est certaine, c’est que WP-CLI est un outil de sécurité sous-estimé.
# Vérifier l'intégrité des fichiers WordPress core
wp core verify-checksums
# Vérifier l'intégrité des plugins
wp plugin verify-checksums --all
# Lister les administrateurs (détecter les comptes suspects)
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered
# Forcer le changement de mot de passe d'un admin compromis
wp user update 1 --user_pass=NouveauMotDePasseTresLong2026!
# Régénérer les clés de sécurité (wp-config.php)
wp config shuffle-salts
Le workflow d’urgence si votre site est compromis :
# 1. Sauvegarder l'état actuel (preuves)
wp db export site-compromis-$(date +%Y%m%d).sql
# 2. Vérifier les checksums
wp core verify-checksums
wp plugin verify-checksums --all
# 3. Désactiver tous les plugins tiers
wp plugin deactivate --all
# 4. Réinstaller WordPress core (fichiers propres)
wp core download --force
# 5. Changer tous les mots de passe admin
wp user list --role=administrator --format=ids | xargs -I {} wp user update {} --user_pass=TempPass$(date +%s)!
# 6. Régénérer les salts
wp config shuffle-salts
Si la situation est critique, j’ai aussi un guide pour réinitialiser complètement un WordPress compromis.
Comment gérer les tâches cron WordPress en CLI ?
WordPress utilise un système de pseudo-cron (wp-cron.php) qui ne se déclenche que quand quelqu’un visite le site. Pas idéal. WP-CLI permet de gérer ça proprement.
# Lister tous les événements cron programmés
wp cron event list
# Exécuter manuellement un événement cron
wp cron event run wp_update_plugins
# Lister les fréquences disponibles
wp cron schedule list
# Tester si wp-cron fonctionne
wp cron test
Mon conseil : désactivez wp-cron.php dans wp-config.php et remplacez-le par un cron serveur :
# Dans wp-config.php
define('DISABLE_WP_CRON', true);
# Dans le crontab serveur (toutes les 15 minutes)
*/15 * * * * cd /home/user/public_html && wp cron event run --due-now
C’est exactement ce que j’utilise sur wpformation.com. Plus fiable, plus prévisible, et ça ne ralentit pas les visiteurs. J’en parle en détail dans mon guide complet sur WP-Cron.
Configurer WP-CLI : wp-cli.yml et alias
C’est la fonctionnalité la plus sous-estimée de WP-CLI. Et pourtant, c’est ce qui transforme un outil pratique en véritable centre de commande.
Le fichier wp-cli.yml
Placez un fichier wp-cli.yml à la racine de votre installation WordPress pour définir des paramètres par défaut :
# wp-cli.yml
path: /home/user/public_html
url: https://monsite.com
user: admin
color: true
apache_modules:
- mod_rewrite
Avec ce fichier, plus besoin de préciser --path= ou --url= à chaque commande. WP-CLI les prend automatiquement.
Vous pouvez aussi créer un fichier global dans votre home (~/.wp-cli/config.yml) qui s’applique à toutes vos installations.
Alias : gérer plusieurs sites d’un seul terminal
C’est là que ça devient vraiment puissant. Définissez des alias pour vos différents environnements :
# wp-cli.yml
@production:
ssh: user@serveur-prod.com/home/user/public_html
url: https://monsite.com
@staging:
ssh: user@serveur-staging.com/home/user/staging
url: https://staging.monsite.com
@local:
path: /var/www/monsite
url: http://localhost:8080
Et ensuite :
# Vérifier la version WordPress sur le serveur de production
wp @production core version
# Mettre à jour les plugins sur le staging
wp @staging plugin update --all
# Comparer les plugins entre production et local
wp @production plugin list
wp @local plugin list
Un terminal, trois environnements. Pas de connexion SSH séparée, pas de confusion entre les serveurs. C’est propre.
Comment diagnostiquer un site lent avec WP-CLI ?
WP-CLI embarque des outils de diagnostic que beaucoup ignorent. Pourtant, quand un site rame et qu’on ne sait pas pourquoi, ils sont précieux.
# Profiler le temps de chargement par étape
wp profile stage --fields=stage,time,cache_ratio
# Profiler les hooks les plus lents
wp profile hook --all --fields=hook,time,cache_hits --spotlight
# Console PHP interactive (pour tester du code en direct)
wp shell
# Évaluer une expression PHP
wp eval "print_r(get_option('active_plugins'));"
# Lancer un serveur de développement local
wp server --port=8080
Info : La commande wp profile nécessite l’installation du package : wp package install wp-cli/profile-command. Elle montre exactement quels hooks et plugins ralentissent votre site, avec des temps en millisecondes. C’est le Xdebug du pauvre, mais pour 90% des cas, ça suffit largement.
wp server est une pépite méconnue. Elle lance le serveur PHP intégré directement sur votre WordPress, sans Apache ni Nginx. Pratique pour tester rapidement quelque chose en local sans monter toute une stack.
Créer ses propres commandes WP-CLI
WP-CLI est extensible. Vous pouvez créer vos propres commandes pour automatiser des processus spécifiques à votre activité.
# Générer le squelette d'un plugin
wp scaffold plugin mon-plugin --plugin_name="Mon Plugin"
# Générer un custom post type
wp scaffold post-type livre --label="Livre" --textdomain="mon-plugin"
Pour créer une commande custom, ajoutez ce code dans un plugin ou un mu-plugin :
if ( defined( 'WP_CLI' ) && WP_CLI ) {
WP_CLI::add_command( 'maintenance rapport', function() {
$posts = wp_count_posts();
$plugins = count( get_option( 'active_plugins' ) );
WP_CLI::success( "Articles publiés : {$posts->publish}" );
WP_CLI::success( "Plugins actifs : {$plugins}" );
WP_CLI::success( "Version WP : " . get_bloginfo( 'version' ) );
});
}
Vous pouvez ensuite lancer wp maintenance rapport pour obtenir un résumé rapide de l’état du site. J’utilise des commandes custom comme celle-ci pour générer des rapports automatisés en formation.
Le système de packages WP-CLI permet aussi d’installer des commandes communautaires :
# Installer un package
wp package install wp-cli/doctor-command
# Lister les packages installés
wp package list
Le package doctor-command est particulièrement utile : il diagnostique les problèmes courants (fichiers modifiés, options suspectes, plugins obsolètes) et propose des corrections.
Quels sont les pièges à éviter avec WP-CLI ?
Après des années d’utilisation quotidienne, voici les erreurs que je vois revenir le plus souvent (et que j’ai toutes commises au moins une fois…) :
Oublier le –dry-run sur search-replace. Je l’ai déjà dit, mais ça mérite d’être répété. Un search-replace sur la mauvaise chaîne, c’est une base corrompue. Toujours simuler d’abord.
Exécuter WP-CLI en root. Ne faites jamais ça. Utilisez toujours l’utilisateur propriétaire des fichiers WordPress. En root, les fichiers créés auront les mauvaises permissions et WP-CLI vous préviendra avec un gros warning.
Ne pas backuper avant un wp db import. L’import écrase la base existante. Si vous importez le mauvais fichier, vous perdez tout. Un wp db export avant, toujours.
Confondre le path en multisite. Sur un réseau multisite, chaque sous-site a son propre --url=. Si vous oubliez de le préciser, vous travaillez sur le site principal par défaut. Mauvaise surprise garantie.
Ignorer les messages d’erreur. WP-CLI est bavard quand quelque chose ne va pas. Lisez les erreurs. Elles sont souvent très explicites : permission denied, fichier introuvable, version PHP incompatible…
WP-CLI vs les plugins de maintenance : le vrai comparatif
Faut-il choisir ? Pas vraiment. Ce sont des outils complémentaires.
| Critère | WP-CLI | ManageWP / MainWP | WP Toolkit (cPanel) |
|---|---|---|---|
| Prix | Gratuit | Freemium (5-15 EUR/site/mois) | Inclus dans cPanel |
| Accès requis | SSH | Plugin + compte cloud | cPanel |
| Automatisation | Scripts bash illimités | Planification intégrée | Basique |
| Interface | Terminal | Dashboard web | Interface cPanel |
| Personnalisation | Commandes custom PHP | Limitée | Limitée |
| Multi-sites | Alias + boucles | Dashboard centralisé | Un par hébergement |
| Courbe d’apprentissage | Modérée | Facile | Facile |
Mon verdict : WP-CLI est la fondation. C’est l’outil qui fait tout, sans dépendance, sans abonnement, sans plugin tiers. ManageWP ou MainWP ajoutent une couche UI confortable pour les opérations courantes, surtout si vous n’êtes pas à l’aise avec le terminal. Les deux approches ne s’excluent pas.
Si tu gères 1 à 3 sites et que le terminal te fait peur, commence par WP Toolkit ou ManageWP. Mais si tu veux vraiment maîtriser tes installations, apprends WP-CLI. Tu ne reviendras pas en arrière.
Aide-mémoire : les commandes WP-CLI par catégorie
| Catégorie | Commande | Description |
|---|---|---|
| Installation | wp core download |
Télécharger WordPress |
| Installation | wp config create |
Générer wp-config.php |
| Installation | wp db create |
Créer la base de données |
| Installation | wp core install |
Installer WordPress |
| Core | wp core update |
Mettre à jour WordPress |
| Core | wp core verify-checksums |
Vérifier l’intégrité des fichiers |
| Plugins | wp plugin install |
Installer une extension |
| Plugins | wp plugin update --all |
Tout mettre à jour |
| Plugins | wp plugin deactivate --all |
Tout désactiver (urgence) |
| Plugins | wp plugin verify-checksums --all |
Vérifier l’intégrité |
| Thèmes | wp theme install |
Installer un thème |
| Thèmes | wp theme activate |
Activer un thème |
| BDD | wp db export |
Sauvegarder la base |
| BDD | wp db import |
Restaurer un backup |
| BDD | wp search-replace |
Chercher/remplacer en base |
| BDD | wp db optimize |
Optimiser les tables |
| BDD | wp transient delete --all |
Purger le cache transient |
| Utilisateurs | wp user create |
Créer un compte |
| Utilisateurs | wp user list |
Lister les comptes |
| Contenu | wp post create |
Créer un article |
| Contenu | wp post list |
Lister les contenus |
| Contenu | wp post delete |
Supprimer du contenu |
| Médias | wp media regenerate |
Régénérer les miniatures |
| Médias | wp media import |
Importer depuis URL |
| SEO | wp rewrite flush |
Vider le cache permaliens |
| SEO | wp rewrite structure |
Changer la structure des URLs |
| Sécurité | wp config shuffle-salts |
Régénérer les clés secrètes |
| Cron | wp cron event list |
Lister les tâches programmées |
| Cron | wp cron event run |
Exécuter une tâche cron |
| Config | wp option get |
Lire une option WordPress |
| Config | wp option update |
Modifier une option |
| Diag | wp profile stage |
Profiler les performances |
| Diag | wp shell |
Console PHP interactive |
| Diag | wp server |
Serveur local intégré |
Ressources pour aller plus loin
Trois ressources que je consulte régulièrement :
- Référence officielle des commandes : la documentation complète de chaque commande, avec tous les paramètres
- WP-CLI Handbook : le guide officiel, avec les bonnes pratiques et les cas d’usage avancés
- Dépôt GitHub WP-CLI : le code source, les issues, et la liste des packages communautaires
Et si vous débutez avec WordPress tout court, mon guide d’installation WordPress couvre aussi la méthode classique (sans CLI) pour ceux qui préfèrent commencer par là.
Pour sécuriser votre installation, je vous recommande aussi de jeter un oeil à mon article sur la sécurité WordPress et sur les sauvegardes WordPress. WP-CLI, c’est puissant, mais ça ne remplace pas une stratégie de sécurité complète.
Pour optimiser les performances de votre site après l’avoir nettoyé en CLI, mon guide pour accélérer WordPress complète parfaitement ce que vous venez d’apprendre ici.
Questions fréquentes
WP-CLI fonctionne-t-il chez O2switch, OVH et Infomaniak ?
Oui, les trois proposent un accès SSH avec WP-CLI pré-installé. Chez O2switch (que j’utilise au quotidien), il suffit d’activer l’accès SSH dans le cPanel. Chez OVH et Infomaniak, même principe. La version installée varie selon l’hébergeur, mais vous pouvez toujours la mettre à jour avec wp cli update.
Faut-il PHP 8 pour utiliser WP-CLI ?
Non, WP-CLI fonctionne à partir de PHP 5.6. Mais en 2026, si votre hébergeur propose encore PHP 5.6, c’est un signal d’alarme. Visez PHP 8.1 minimum pour des raisons de performance et de sécurité. WP-CLI tire pleinement parti des versions récentes de PHP.
Comment mettre à jour WP-CLI ?
Une seule commande : wp cli update. Si vous l’avez installé via Composer, utilisez composer global update wp-cli/wp-cli-bundle. Vérifiez votre version avec wp cli version. Je recommande une vérification trimestrielle.
WP-CLI fonctionne-t-il avec un multisite ?
Oui, parfaitement. Ajoutez --url=https://sous-site.monreseau.com pour cibler un sous-site spécifique. Sans ce paramètre, WP-CLI travaille sur le site principal du réseau. Les commandes wp site list et wp super-admin list sont spécifiques au multisite.
WP-CLI est-il sécurisé ?
WP-CLI s’exécute via SSH, qui est un protocole chiffré. L’outil lui-même ne crée pas de faille de sécurité. Le risque principal vient des commandes exécutées : un search-replace mal ciblé ou un db import accidentel peuvent causer des dégâts. D’où l’importance du --dry-run et des backups systématiques.
Peut-on utiliser WP-CLI sans SSH ?
Difficilement. WP-CLI est conçu pour s’exécuter sur le serveur via SSH. Certains hébergeurs proposent un terminal web dans le cPanel (comme O2switch), ce qui revient au même sans client SSH. Il existe aussi WP-CLI via WP_CLI_PHP, mais c’est marginal et pas recommandé pour la production.
Comment installer WP-CLI sur Windows ?
Deux options : installer WSL (Windows Subsystem for Linux), qui vous donne un vrai terminal Linux, ou utiliser WP-CLI via Docker (docker run -it wordpress:cli wp cli info). WSL est la solution la plus propre et celle que je recommande. PowerShell peut aussi fonctionner mais avec des limitations.
Quelle est la différence entre WP-CLI et SSH ?
SSH est le protocole de connexion sécurisée à un serveur distant (le tunnel). WP-CLI est l’outil qui s’exécute une fois connecté (la commande). Vous avez besoin de SSH pour accéder au serveur, puis vous utilisez WP-CLI pour gérer WordPress. L’un ne remplace pas l’autre.
WP-CLI peut-il remplacer un plugin de maintenance ?
Pour les opérations techniques (mises à jour, backups, nettoyage), oui. WP-CLI fait tout ça sans plugin. En revanche, si vous avez besoin d’un dashboard visuel centralisé pour gérer 20 sites avec des rapports clients, ManageWP ou MainWP restent pertinents. Les deux approches se complètent.
Comment débuguer une commande WP-CLI qui échoue ?
Ajoutez --debug à la fin de votre commande pour obtenir un log détaillé. Par exemple : wp plugin update --all --debug. Les erreurs les plus courantes sont : mauvais path (vérifiez avec wp cli info), permissions insuffisantes, ou version PHP incompatible. La commande wp cli info affiche toute la configuration actuelle.
WP-CLI, c’est un peu comme apprendre à conduire en boîte manuelle. Au début, on préfère l’automatique (le tableau de bord WordPress). Mais une fois qu’on maîtrise l’embrayage, on ne revient plus en arrière. Le terminal devient votre meilleur allié pour gérer WordPress proprement, rapidement, et sans dépendance à des plugins tiers.
Depuis que je forme des professionnels à WordPress (organisme certifié Qualiopi, speaker WordCamp), je consacre toujours une session complète à WP-CLI dans mes formations avancées. C’est l’outil qui fait la différence entre un utilisateur WordPress et quelqu’un qui maîtrise vraiment son installation. Les stagiaires qui repartent avec ces compétences gagnent entre 2 et 5 heures par semaine sur leurs tâches d’administration.
Autant de temps réinvesti dans ce qui compte vraiment : le contenu, le design, le business.
Chaque mois, je passe 15 heures en veille WordPress. Vous, vous recevez un email de 3 minutes.
Sécurité, performance, SEO, nouveautés, IA : l'essentiel trié, vérifié et expliqué par un formateur WordPress depuis 2012 et fondateur de WPServeur.
1 email par mois. Désabonnement en 1 clic.
Analyser avec l'IA
Partager

