WP-CLI est l'outil en ligne de commande officiel de WordPress. Il fait absolument tout ce que fait l'interface graphique — et plus vite, de façon scriptable, sans charger le front. Pour un développeur ou un admin qui gère plusieurs sites, c'est l'outil incontournable.
Vérifier qu'il est installé
Sur nos hébergements Plesk et sur nos VPS Debian/Ubuntu, WP-CLI est pré-installé. Connectez-vous en SSH et lancez :
wp --info
Vous devriez voir une sortie du type :
OS: Linux 6.1.0-x86_64
PHP binary: /usr/bin/php8.3
PHP version: 8.3.x
WP-CLI version: 2.11.0
Installation manuelle (VPS sans WP-CLI)
Si wp --info renvoie command not found :
curl -O https://raw.githubusercontent.com/wp-cli/wp-cli/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
wp --info
wp-config.php, sinon il ne sait pas quel site gérer. Sur Plesk : cd /var/www/vhosts/mon-domaine.fr/httpdocs. Alternative : utiliser le flag --path=.
Commandes essentielles
Core WordPress
# Version installée
wp core version
# Vérifier l'intégrité des fichiers core
wp core verify-checksums
# Mettre à jour WordPress
wp core update
# Mettre à jour la base de données après une maj
wp core update-db
# Télécharger une version spécifique (sans l'installer)
wp core download --version=6.5.3 --locale=fr_FR --force
Plugins
# Lister tous les plugins (actifs + inactifs)
wp plugin list
# Seulement les actifs
wp plugin list --status=active
# Installer et activer
wp plugin install wordfence --activate
# Tout mettre à jour
wp plugin update --all
# Simulation : voir ce qui serait mis à jour, sans rien faire
wp plugin update --all --dry-run
# Désactiver un plugin
wp plugin deactivate nom-plugin
# Supprimer (désactive d'abord si nécessaire)
wp plugin delete nom-plugin
# Désactiver tous les plugins (debug)
wp plugin deactivate --all
Thèmes
wp theme list
wp theme activate twentytwentyfour
wp theme update --all
wp theme delete nom-theme
Utilisateurs
# Lister
wp user list --fields=ID,user_login,user_email,roles
# Créer un admin
wp user create marie marie@exemple.fr --role=administrator --send-email
# Changer le mot de passe
wp user update 42 --user_pass='NouveauMotDePasseFort'
# Supprimer en réattribuant les contenus
wp user delete ancien-admin --reassign=2
Base de données
# Exporter la BDD en SQL (nom du fichier auto)
wp db export
# Nom de fichier précis + compression
wp db export backup-$(date +%Y%m%d).sql
# Importer
wp db import backup-20260423.sql
# Console MySQL interactive
wp db cli
# Optimiser (équivalent phpMyAdmin optimize)
wp db optimize
# Taille de la base
wp db size --tables
Search-replace (migration de domaine)
La commande la plus utile de WP-CLI. Remplace toutes les occurrences d'une chaîne dans la base, y compris dans les données sérialisées PHP (impossible avec un simple sed).
# Simulation — TOUJOURS commencer par ça
wp search-replace 'https://ancien-domaine.fr' 'https://nouveau-domaine.fr' --dry-run
# Exécution réelle
wp search-replace 'https://ancien-domaine.fr' 'https://nouveau-domaine.fr' --all-tables --skip-columns=guid
# Avec export SQL de sécurité avant
wp db export avant-migration.sql && \
wp search-replace 'ancien-domaine.fr' 'nouveau-domaine.fr' --all-tables --skip-columns=guid
--skip-columns=guid est important : le champ guid ne doit jamais être modifié (il identifie de manière unique les posts pour les flux RSS).
Options et métadonnées
wp option get siteurl
wp option update siteurl 'https://mon-domaine.fr'
wp option get blogname
# Mettre à jour une option complexe (JSON)
wp option update woocommerce_tax_rates '{"fr":20}' --format=json
Cache
# Vider le cache objet (transients, cache)
wp cache flush
# Supprimer les transients expirés
wp transient delete --expired
# Tout supprimer
wp transient delete --all
Cron WordPress
# Lister les tâches WP-Cron
wp cron event list
# Exécuter toutes les tâches dues
wp cron event run --due-now
# Lancer une tâche spécifique
wp cron event run wp_version_check
Couplé avec un vrai cron système, ça donne la méthode propre pour déclencher WP-Cron (voir le guide crons) :
*/5 * * * * cd /var/www/vhosts/mon-domaine.fr/httpdocs && /usr/bin/wp cron event run --due-now > /dev/null 2>&1
Scripts utiles
Maintenance hebdomadaire
Fichier /home/monuser/bin/wp-weekly.sh :
#!/bin/bash
set -euo pipefail
SITE=/var/www/vhosts/mon-domaine.fr/httpdocs
LOG=/home/monuser/logs/wp-weekly.log
cd "$SITE"
{
echo "=== $(date -Iseconds) — maintenance hebdo ==="
wp core update
wp plugin update --all
wp theme update --all
wp core update-db
wp db optimize
wp transient delete --expired
wp cache flush
echo "=== fin ==="
} >> "$LOG" 2>&1
Puis chmod +x wp-weekly.sh et un cron hebdomadaire :
0 4 * * 1 /home/monuser/bin/wp-weekly.sh
Réinitialiser un site de staging
#!/bin/bash
# Restaure le staging à partir de la prod
cd /var/www/vhosts/staging.mon-domaine.fr/httpdocs
# Clone DB depuis la prod
ssh prod 'wp --path=/var/www/vhosts/mon-domaine.fr/httpdocs db export -' | wp db import -
# Remplace les URLs
wp search-replace 'https://mon-domaine.fr' 'https://staging.mon-domaine.fr' --all-tables --skip-columns=guid
# Désindexation staging
wp option update blog_public 0
root. Si vous voyez Error: YIKES! It looks like you're running this as root, ne mettez pas --allow-root pour passer outre : vous créerez des fichiers appartenant à root que le serveur web ne pourra plus écrire. Utilisez sudo -u monuser wp ..., ou connectez-vous en SSH avec l'utilisateur système du site (visible dans Plesk).
Un module PHP manque
Certaines commandes demandent des extensions PHP spécifiques (zip, imagick, intl). Si vous voyez Missing PHP extension, ouvrez un ticket chez Datacampus, nous l'activons côté serveur — ce n'est pas une opération que vous pouvez faire depuis Plesk.