ITSkillsCenter
WordPress

Guide : WP-CLI — gérer WordPress en ligne de commande

9 min de lecture

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 thème 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 thème update --all

# Tout mettre à jour en une fois
wp core update && wp core update-db && wp plugin update --all && wp thème 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 thème list

# Installer un thème
wp thème install flavor thème --activate

# Activer un thème
wp thème activate flavor thème-child

# Supprimer un thème inactif
wp thème 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 --rôle=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 --rôle=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 thème 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=json ou --format=table pour changer le format de sortie
  • Aide intégrée : wp help commande affiche 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 thème 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 --rôle=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
Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité