WP-CLI est l'interface en ligne de commande officielle de WordPress. Au lieu de cliquer dans wp-admin, vous saisissez des commandes dans un terminal sur le serveur : wp core update met WordPress à jour, wp plugin update --all met à jour toutes les extensions, wp db export sauvegarde la base de données, wp search-replace remplace un domaine sur l'ensemble du site sans corrompre les données sérialisées. Le projet a été lancé en 2011 par Andrés Cifuentes et Cristi Burcă, il est maintenu aujourd'hui comme un projet officiel de WordPress.org, et il est devenu l'outil standard de la maintenance WordPress professionnelle, de l'automatisation chez les hébergeurs et des chaînes de déploiement. L'argument pratique est simple : tout ce que fait wp-admin, WP-CLI le fait plus vite, plus une longue liste de choses dont wp-admin est tout simplement incapable, comme vérifier les fichiers du cœur face aux sommes de contrôle officielles après un piratage suspecté, réparer un site dont l'administration est inaccessible à cause d'une erreur fatale, ou exécuter le même script de maintenance sur cinquante sites avant que votre café ne refroidisse.
Qu'est-ce que WP-CLI et qui le maintient ?
WP-CLI est une application PHP qui charge WordPress dans le terminal et expose ses fonctionnalités sous forme de commandes. Comme elle démarre l'installation WordPress réelle, elle travaille avec vos vraies données, vos extensions installées et votre configuration, pas avec une simulation. Le projet vit sur wp-cli.org et sur GitHub, les publications sont coordonnées avec le projet WordPress, et la référence des commandes dans le manuel des développeurs WordPress documente chaque commande intégrée.
Les prérequis sont modestes : un accès SSH au serveur, PHP en ligne de commande et un environnement de type UNIX (Linux, macOS, ou Windows via WSL). Ce premier prérequis est le seul véritable filtre. Sur un hébergement mutualisé sans accès SSH, vous ne pouvez pas utiliser WP-CLI, alors que la plupart des hébergeurs WordPress infogérés non seulement l'autorisent, mais le préinstallent.
Comment installer WP-CLI
Avant d'installer quoi que ce soit, vérifiez s'il n'est pas déjà là. Chez de nombreux hébergeurs, taper wp --info dans une session SSH répond à la question. Sinon, l'installation prend deux minutes, car WP-CLI se distribue sous forme d'un unique fichier Phar :
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
php wp-cli.phar --info
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp
# Vérifier l'installation
wp --infoPour le développement local, vous avez rarement besoin de l'installer à la main, puisque Local, DDEV, Lando et l'officiel wp-env intègrent tous WP-CLI. Une fois installées, les commandes s'exécutent depuis le répertoire racine de WordPress, ou depuis n'importe où avec l'option --path pointant vers l'installation.
Les commandes WP-CLI essentielles au quotidien
La structure est toujours la même : wp, un sujet, une sous-commande et des options. Tour d'horizon de celles qui portent l'essentiel de la maintenance réelle :
# Cœur : contrôler, mettre à jour, vérifier
wp core version
wp core update
wp core verify-checksums
# Extensions : lister, installer, tout mettre à jour
wp plugin list
wp plugin install wordpress-seo --activate
wp plugin update --all
# Les thèmes fonctionnent de la même façon
wp theme list
wp theme update --all
# Utilisateurs : créer, lister, réinitialiser un mot de passe
wp user list
wp user create anna anna@example.com --role=editor
wp user update admin --user_pass="nouveau-mot-de-passe-robuste"
# Base de données : exporter avant de toucher à quoi que ce soit
wp db export backup-$(date +%F).sql
wp db size --human-readableDeux détails rendent les commandes de liste plus utiles qu'il n'y paraît. Chaque liste accepte des filtres et des formats de sortie, si bien que wp plugin list --update=available --format=csv vous fournit un rapport exploitable par machine des mises à jour en attente. Et wp core verify-checksums compare chaque fichier du cœur aux sommes de contrôle officielles de WordPress.org, ce qui transforme la question vague quelqu'un a-t-il modifié mes fichiers du cœur en une réponse par oui ou par non en cinq secondes. C'est l'une des premières commandes à lancer sur tout site que vous soupçonnez d'avoir été compromis.
Search-replace : la commande qui rentabilise l'installation
La fonctionnalité qui convertit la plupart des sceptiques est wp search-replace. Changer de domaine, passer de la préproduction à la production ou basculer en HTTPS demande de remplacer des URL dans toute la base de données. Le faire en SQL brut casse WordPress, car les thèmes, les extensions et les widgets stockent leurs réglages sous forme de données PHP sérialisées, où chaque chaîne est préfixée par sa longueur. Remplacez http par https dans une chaîne sérialisée via SQL et la longueur enregistrée ne correspond plus, si bien que WordPress abandonne silencieusement le réglage entier. WP-CLI désérialise les données, remplace la valeur, resérialise avec les bonnes longueurs et réécrit le tout :
# D'abord une simulation : montre ce qui changerait, ne change rien
wp search-replace 'http://ancien-domaine.com' 'https://nouveau-domaine.com' --dry-run
# L'exécution réelle, avec un rapport par table
wp search-replace 'http://ancien-domaine.com' 'https://nouveau-domaine.com' --report-changed-onlyL'option --dry-run mérite une place permanente dans votre mémoire musculaire. Elle répond à la question de ce qui se passerait avant que quoi que ce soit ne se passe, ce qui est exactement l'étape de confirmation que le reste de WP-CLI n'offre pas.
WP-CLI pour la maintenance et le dépannage
Une poignée de commandes résout des problèmes réellement pénibles à traiter dans le navigateur :
- Administration cassée après une mise à jour. Une erreur fatale d'extension peut vous verrouiller totalement hors de wp-admin. wp plugin deactivate extension-cassee fonctionne quand même, car WP-CLI n'a pas besoin que l'interface d'administration s'affiche.
- Inspection du cron. wp cron event list montre chaque tâche planifiée avec sa prochaine exécution, et wp cron event run --due-now lance celles qui sont en retard. Déboguer le pseudo-cron de WordPress sans cela relève de la devinette.
- Nettoyage des transients. wp transient delete --expired supprime les transients expirés qui gonflent la table des options sur les sites anciens.
- Vidage du cache. wp cache flush vide le cache objet, utile après un déploiement quand Redis ou Memcached sert des données périmées.
- Règles de réécriture. wp rewrite flush corrige le classique symptôme des 404 après migration sans passer par la page des réglages de permaliens.
Automatiser WordPress avec des scripts et des alias WP-CLI
Parce que chaque commande est scriptable, WP-CLI transforme la maintenance récurrente en fichiers plutôt qu'en souvenirs. Une routine hebdomadaire de mise à jour devient un court script shell : exporter la base de données, mettre à jour le cœur, les extensions et les thèmes, vérifier les sommes de contrôle, terminé. Le même script s'exécute depuis une tâche cron ou une chaîne d'intégration continue, et une boucle sur une liste de chemins d'installation entretient tout un portefeuille de sites.
#!/bin/bash
# Maintenance hebdomadaire minimale pour un site
wp db export ~/backups/backup-$(date +%F).sql
wp core update
wp plugin update --all
wp theme update --all
wp core verify-checksumsPour travailler entre plusieurs environnements, WP-CLI prend en charge des alias dans un fichier wp-cli.yml. Définissez une fois @staging et @production avec leurs paramètres SSH, puis wp @staging plugin list s'exécute à distance depuis votre terminal local. Combiné à l'option --ssh, le terminal de votre portable devient la salle de contrôle de tous les sites WordPress que vous gérez.
Les conseils de sécurité pour WP-CLI
L'efficacité coupe des deux côtés : les commandes s'exécutent immédiatement et il n'y a pas d'annulation. Quelques habitudes empêchent l'outil puissant de devenir un problème puissant :
- Exportez avant les commandes destructrices. wp db export coûte quelques secondes et transforme une catastrophe en désagrément. Des commandes comme db reset, site empty et search-replace en méritent un à chaque fois.
- Simulez quand c'est proposé. search-replace dispose de --dry-run exactement pour cette raison.
- N'exécutez pas WP-CLI en tant que root. WP-CLI vous avertit bruyamment, car un processus appartenant à root exécute le code PHP du site avec tous les droits système et crée des fichiers auxquels l'utilisateur du serveur web ne peut pas toucher. Lancez-le avec le même utilisateur que celui du site.
- La préproduction d'abord. Toute commande que vous n'avez jamais utilisée mérite de faire ses débuts en production sur une copie.
WP-CLI et InspectWP : les constats entrent, les correctifs sortent
Un rapport InspectWP vous indique ce qui demande attention sur un site WordPress : une version du cœur obsolète, des extensions avec des mises à jour en attente ou des vulnérabilités connues, des thèmes restés en arrière. WP-CLI est le moyen le plus rapide d'agir sur exactement ces constats, puisque wp core update et wp plugin update --all en règlent l'essentiel en moins d'une minute, et que wp core verify-checksums recontrôle l'intégrité lorsqu'un rapport soulève des inquiétudes de sécurité. Les deux forment une boucle naturelle pour qui entretient des sites WordPress à titre professionnel : les rapports InspectWP planifiés font remonter le travail, une session WP-CLI le liquide, et le rapport suivant confirme la correction.