Qu’est-ce que WP-CLI et pourquoi l’utiliser
WP-CLI est l’interface en ligne de commande officielle de WordPress. Au lieu de cliquer dans le tableau de bord pour installer un plugin, mettre à jour un thème ou créer un utilisateur, vous tapez une commande dans le terminal et c’est fait en 2 secondes. Pour les développeurs et administrateurs qui gèrent plusieurs sites WordPress, c’est un gain de temps énorme — et certaines tâches ne sont possibles qu’en CLI.
Cas d’usage concrets
- Mettre à jour WordPress, tous les plugins et tous les thèmes en une seule commande
- Chercher et remplacer des URLs dans la base de données (migration de domaine)
- Exporter/importer la base de données
- Créer des utilisateurs en masse
- Vider tous les caches
- Régénérer les miniatures d’images
- Automatiser des tâches via cron ou scripts bash
Installation de WP-CLI
Sur un serveur Linux/Mac
# Télécharger WP-CLI
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
# Vérifier que ça fonctionne
php wp-cli.phar --info
# Rendre exécutable et déplacer dans le PATH
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# Vérifier l'installation
wp --version
Sur un hébergement mutualisé
Beaucoup d’hébergeurs installent WP-CLI par défaut. Connectez-vous en SSH et tapez :
wp --version
Si ça fonctionne, WP-CLI est déjà installé. C’est le cas chez Hostinger, SiteGround, Cloudways, et la plupart des hébergeurs modernes.
Si SSH n’est pas disponible (hébergement très basique), WP-CLI ne pourra pas être utilisé. C’est un bon critère pour choisir un hébergeur.
Les commandes essentielles
Toutes les commandes s’exécutent depuis la racine de votre installation WordPress (le dossier contenant wp-config.php).
Informations système
# Version de WordPress
wp core version
# Informations complètes (PHP, MySQL, plugins actifs...)
wp --info
# Vérifier la santé du site
wp site health
Mises à jour
# Vérifier les mises à jour disponibles
wp core check-update
wp plugin list --update=available
wp theme list --update=available
# Mettre à jour WordPress
wp core update
wp core update-db # Mettre à jour la base de données si nécessaire
# Mettre à jour TOUS les plugins
wp plugin update --all
# Mettre à jour TOUS les thèmes
wp theme update --all
# Tout mettre à jour en une fois
wp core update && wp core update-db && wp plugin update --all && wp theme update --all
Conseil : Faites toujours une sauvegarde avant les mises à jour. Avec WP-CLI, c’est rapide :
# Exporter la base de données avant mise à jour
wp db export backup-avant-maj.sql
Gestion des plugins
# Lister tous les plugins (actifs et inactifs)
wp plugin list
# Lister seulement les plugins actifs
wp plugin list --status=activé
# Installer un plugin depuis le répertoire WordPress.org
wp plugin install woocommerce
# Installer ET activer
wp plugin install contact-form-7 --activate
# Activer un plugin existant
wp plugin activate akismet
# Désactiver un plugin
wp plugin deactivate jetpack
# Désactiver TOUS les plugins (debug)
wp plugin deactivate --all
# Supprimer un plugin
wp plugin delete hello-dolly
# Chercher un plugin
wp plugin search "cache" --fields=name,slug,rating
Gestion des thèmes
# Lister les thèmes
wp theme list
# Installer un thème
wp theme install flavor thème --activate
# Activer un thème
wp theme activate flavor thème-child
# Supprimer un thème inactif
wp theme delete flavor thème
Gestion de la base de données
# Exporter la base de données
wp db export sauvegarde.sql
# Exporter seulement certaines tables
wp db export --tables=wp_posts,wp_postmeta sauvegarde-posts.sql
# Importer une base de données
wp db import sauvegarde.sql
# Optimiser la base (comme phpMyAdmin > Optimiser)
wp db optimize
# Réparer la base
wp db repair
# Exécuter une requête SQL
wp db query "SELECT COUNT(*) FROM wp_posts WHERE post_type='post' AND post_status='publish'"
Chercher et remplacer dans la base de données
C’est LA fonctionnalité la plus précieuse de WP-CLI. Indispensable lors d’une migration de domaine :
# Remplacer l'ancien domaine par le nouveau
wp search-replace 'http://ancien-domaine.com' 'https://nouveau-domaine.com'
# Simulation (dry-run) — voir ce qui va changer SANS modifier
wp search-replace 'http://ancien-domaine.com' 'https://nouveau-domaine.com' --dry-run
# Remplacer dans des tables spécifiques
wp search-replace 'ancien.com' 'nouveau.com' wp_posts wp_postmeta wp_options
# Passer de HTTP à HTTPS
wp search-replace 'http://monsite.com' 'https://monsite.com'
# Changer le préfixe www
wp search-replace 'www.monsite.com' 'monsite.com'
Important : wp search-replace gère les données sérialisées (serialized data) que PHP utilise dans wp_options et les meta. Un simple SQL REPLACE casserait ces données. WP-CLI les désérialise, fait le remplacement, et les re-sérialise correctement.
Gestion des utilisateurs
# Lister les utilisateurs
wp user list
# Créer un utilisateur administrateur
wp user create admin admin@monsite.com --role=administrator --user_pass=motdepasse_fort
# Changer le mot de passe d'un utilisateur
wp user update 1 --user_pass=nouveau_mot_de_passe
# Changer le rôle d'un utilisateur
wp user set-rôle 5 editor
# Supprimer un utilisateur (réassigner ses contenus à l'utilisateur 1)
wp user delete 42 --reassign=1
# Lister les utilisateurs par rôle
wp user list --role=subscriber --fields=ID,user_login,user_email
Gestion du contenu
# Lister les articles
wp post list --post_type=post --post_status=publish --fields=ID,post_title,post_date
# Créer un article
wp post create --post_type=post --post_title="Mon article" --post_status=draft
# Supprimer un article (dans la corbeille)
wp post delete 123
# Supprimer définitivement
wp post delete 123 --force
# Vider la corbeille
wp post delete $(wp post list --post_status=trash --format=ids) --force
# Mettre à jour un article
wp post update 123 --post_title="Nouveau titre"
# Générer du contenu de test
wp post generate --count=10 --post_type=post --post_status=publish
# Exporter le contenu (format WXR pour import WordPress)
wp export
# Importer du contenu
wp import fichier.xml --authors=create
Maintenance et optimisation
# Vider le cache objet
wp cache flush
# Régénérer les miniatures d'images (après changement de thème)
wp media regenerate --yes
# Régénérer seulement les images sans miniature
wp media regenerate --only-missing
# Supprimer les révisions d'articles (allège la base)
wp post delete $(wp post list --post_type=révision --format=ids) --force
# Supprimer les transients expirés
wp transient delete --expired
# Supprimer TOUS les transients
wp transient delete --all
# Vider les commentaires spam
wp comment delete $(wp comment list --status=spam --format=ids) --force
# Mettre le site en mode maintenance
wp maintenance-mode activate
# Désactiver le mode maintenance
wp maintenance-mode deactivate
Réécriture des permaliens
# Regénérer les règles de réécriture (après création de CPT, changement de structure)
wp rewrite flush
# Voir la structure actuelle
wp rewrite structure
# Lister les règles
wp rewrite list
Options WordPress
# Voir une option
wp option get siteurl
wp option get blogname
wp option get permalink_structure
# Modifier une option
wp option update blogname "ITSkillsCenter"
wp option update blogdescription "Formation tech au Sénégal"
# Voir les options de taille d'image
wp option get thumbnail_size_w
wp option get medium_size_w
wp option get large_size_w
# Modifier la taille des images
wp option update large_size_w 1200
wp option update large_size_h 0
WooCommerce avec WP-CLI
Si WooCommerce est installé, des commandes supplémentaires sont disponibles :
# Lister les commandes
wp wc shop_order list --fields=id,status,total
# Voir les détails d'une commande
wp wc shop_order get 456
# Mettre à jour le statut d'une commande
wp wc shop_order update 456 --status=completed
# Lister les produits
wp wc product list --fields=id,name,price,stock_quantity
# Supprimer les sessions WooCommerce expirées (nettoie la base)
wp wc tool run clear_expired_transients
Scripts d’automatisation
Script de sauvegarde automatique
#!/bin/bash
# backup-wp.sh — Sauvegarde WordPress complète
DATE=$(date +%Y-%m-%d)
SITE_PATH="/var/www/monsite"
BACKUP_PATH="/backups/wordpress"
cd $SITE_PATH
# Sauvegarde base de données
wp db export "$BACKUP_PATH/db-$DATE.sql"
# Sauvegarde fichiers uploads
tar -czf "$BACKUP_PATH/uploads-$DATE.tar.gz" wp-content/uploads/
# Supprimer les sauvegardes de plus de 30 jours
find $BACKUP_PATH -name "*.sql" -mtime +30 -delete
find $BACKUP_PATH -name "*.tar.gz" -mtime +30 -delete
echo "Sauvegarde terminée : $DATE"
Script de mise à jour sécurisée
#!/bin/bash
# update-wp.sh — Mise à jour avec sauvegarde préalable
cd /var/www/monsite
echo "1. Sauvegarde de la base..."
wp db export backup-avant-maj.sql
echo "2. Mise à jour du core..."
wp core update
wp core update-db
echo "3. Mise à jour des plugins..."
wp plugin update --all
echo "4. Mise à jour des thèmes..."
wp theme update --all
echo "5. Vidage du cache..."
wp cache flush
wp rewrite flush
echo "Mise à jour terminée !"
wp core version
Exécuter via cron
# Ajouter au crontab (crontab -e)
# Sauvegarde quotidienne à 3h du matin
0 3 * * * /bin/bash /scripts/backup-wp.sh >> /var/log/wp-backup.log 2>&1
# Mise à jour hebdomadaire le dimanche à 4h
0 4 * * 0 /bin/bash /scripts/update-wp.sh >> /var/log/wp-update.log 2>&1
Déboguer avec WP-CLI
# Vérifier les checksums WordPress (fichiers modifiés/corrompus)
wp core verify-checksums
# Vérifier les checksums des plugins
wp plugin verify-checksums --all
# Lancer le cron WordPress manuellement
wp cron event run --all
# Lister les tâches cron planifiées
wp cron event list
# Évaluer du code PHP dans le contexte WordPress
wp eval "echo get_bloginfo('name');"
wp eval "echo wp_count_posts()->publish;"
# Shell interactif WordPress
wp shell
# Puis tapez du PHP : get_option('siteurl');
Gestion multisite
# Lister les sites d'un réseau multisite
wp site list
# Exécuter une commande sur un site spécifique
wp plugin list --url=sous-site.monreseau.com
# Exécuter une commande sur TOUS les sites
wp site list --field=url | xargs -I {} wp plugin update --all --url={}
Astuces pratiques
- Autocomplétion : Installez la complétion bash pour WP-CLI avec
wp cli completions --type=bash. Vous pourrez utiliser Tab pour compléter les commandes - Format de sortie : Ajoutez
--format=csv,--format=jsonou--format=tablepour changer le format de sortie - Aide intégrée :
wp help commandeaffiche la documentation complète de chaque commande - Alias : Créez un fichier
wp-cli.ymlà la racine du site pour des raccourcis :path: /var/www/monsiteévite de naviguer dans le dossier à chaque fois
Commandes à mémoriser
| Tâche | Commande |
|---|---|
| Tout mettre à jour | wp core update && wp plugin update --all && wp theme update --all |
| Sauvegarder la BDD | wp db export backup.sql |
| Migration de domaine | wp search-replace 'ancien.com' 'nouveau.com' --dry-run |
| Créer un admin | wp user create admin email@mail.com --role=administrator |
| Vider les caches | wp cache flush && wp transient delete --all |
| Debug plugins | wp plugin deactivate --all puis réactiver un par un |
| Régénérer images | wp media regenerate --yes |
Confier la production à des professionnels
Au lieu de tout monter vous-même, déléguez la conception. Vous gardez le contrôle ensuite grâce à la formation incluse.
À partir de 350 000 FCFA
Pourquoi WP-CLI est indispensable en 2026
WP-CLI (wp-cli.org), publie en 2011 et maintenu activement par la communaute WordPress, est l outil en ligne de commande officiel pour administrer WordPress. C est ce qui differencie un administrateur amateur d un professionnel : tout ce qui se fait dans l interface admin se fait en WP-CLI, dix fois plus vite, sans navigateur, et scriptable.
L hebergement managed moderne (Kinsta, WP Engine, Hostinger Premium) inclut WP-CLI dans la console SSH. Sur un VPS, l installation prend 2 minutes (telecharger wp-cli.phar, le rendre executable, le placer dans /usr/local/bin/wp). Une fois en place, c est l outil que vous utiliserez pour 80 pour cent des operations d administration.
Les 15 commandes du quotidien
Mises a jour. wp core update met a jour WordPress. wp plugin update --all met a jour tous les plugins. wp theme update --all pour les themes. Pour une maintenance scriptee, wp core update && wp plugin update --all && wp theme update --all en une ligne.
Gestion des plugins. wp plugin install nom-du-plugin --activate installe et active. wp plugin deactivate nom, wp plugin delete nom. wp plugin list liste l etat actuel.
Gestion des utilisateurs. wp user create login email --role=administrator cree un admin. wp user update login --user_pass=NOUVEAU change le mot de passe. wp user list --role=administrator audite les admins.
Cache et rotation. wp cache flush vide le cache objet. wp rewrite flush regenere les permaliens. Indispensables apres certaines manipulations.
Recherche/remplacement de masse. wp search-replace ancien.com nouveau.com remplace toutes les occurrences dans la base de donnees (utile pour les migrations de domaine). Toujours executer avec --dry-run d abord pour previsualiser.
Import/export de la BDD. wp db export backup.sql dump complet. wp db import backup.sql restore. Plus rapide et fiable que phpMyAdmin sur les bases volumineuses.
Eval ad-hoc. wp eval-file script.php execute du PHP arbitraire dans le contexte WordPress. Utile pour les correctifs ponctuels et les explorations.
Imports massifs. wp media import dossier/*.jpg --post_id=42 importe des images. wp post create --post_type=produit --post_status=publish --post_title='Mon produit' cree des posts en masse.
Scripts d automatisation typiques
Trois scripts shell rendent un cabinet d agence WordPress beaucoup plus efficace.
Maintenance hebdomadaire. Un cron qui execute chaque dimanche : wp core update + wp plugin update + wp db optimize + wp cache flush + wp media regenerate. 5 minutes par site automatiquement, sans intervention humaine. Pour 30 sites clients, c est 2,5 heures gagnees par semaine.
Sauvegarde avant migration. wp db export pre-migration.sql + tar des wp-content/uploads. Le script teste aussi la restauration sur un sous-domaine sandbox pour valider l integrite avant de partir en migration.
Provisioning d un nouveau site. wp core install + wp option update blogname + wp plugin install les 10 plugins standards + wp theme install + wp user create pour le client. Un nouveau site en 90 secondes au lieu de 30 minutes manuellement.
Astuces pour aller plus loin
Configuration globale par site. Un fichier wp-cli.yml a la racine du site definit les variables (path WordPress, user, environment) qui evitent de retaper a chaque commande.
Aliases multi-sites. Pour gerer plusieurs sites, definir des aliases SSH dans ~/.wp-cli/config.yml. Ensuite wp @prod plugin update --all execute la commande sur le serveur prod via SSH.
Custom commands. Un plugin custom peut declarer ses propres commandes WP-CLI. Pour une agence avec des operations recurrentes (synchronisation entre staging et prod, generation de contenu de demo, audit de securite custom), c est un investissement rentabilise en quelques semaines.
Securite : ce qu il ne faut pas faire
WP-CLI s execute avec les permissions du user systeme qui le lance. Ne jamais executer en root (l erreur --allow-root requise est volontairement penible pour vous decourager). Toujours utiliser un user systeme dedie (typiquement www-data ou un user nominatif) qui a uniquement les permissions sur le dossier WordPress.
Acces SSH limite. Le SSH du serveur doit etre verrouille par cles, fail2ban actif, et idealement reserve a un VPN ou bastion. Un attaquant qui prend la main sur SSH a acces a WP-CLI et donc a tout le site.
Logs des commandes. Activer l historique shell (.bash_history conserve, ou un logger systeme) pour avoir une trace des operations en cas d incident.
FAQ
WP-CLI fonctionne-t-il sur les hebergeurs mutualises ?
Variable. Hostinger Premium, OVH Performance, o2switch incluent WP-CLI. Les hebergeurs entree de gamme (sans SSH) ne le supportent pas. Verifier l acces SSH avant souscription si on veut utiliser WP-CLI.
WP-CLI vs interface admin pour les operations courantes ?
WP-CLI est strictement superieur pour : les mises a jour, les migrations, les operations de masse, la creation de nombreuses pages, les sauvegardes. L interface admin reste plus pratique pour : la creation editoriale (qui beneficie de l aperçu), la gestion fine des permissions, le reglage visuel d un theme.
Quelle alternative si SSH n est pas disponible ?
WP-CLI Web (un plugin) expose une console limitee dans l interface admin. Tres pratique pour des operations ponctuelles mais expose une surface d attaque additionnelle — a desactiver immediatement apres usage.
WP-CLI Multisite ?
Toutes les commandes acceptent --url=sous-site.example.com pour cibler un sous-site dans un reseau Multisite. wp site list liste les sites. wp site delete ID en supprime un. Maitriser ces specificites est indispensable pour qui gere un reseau Multisite.
References
- WP-CLI Handbook — make.wordpress.org/cli/handbook
- Liste complete des commandes — developer.wordpress.org/cli/commands
- WP-CLI Quick Start — make.wordpress.org/cli/handbook/quick-start
- WP-CLI Configuration — make.wordpress.org/cli/handbook/references/config