Chapitre 4.3 — WP-CLI : la ligne de commande
⏱️ TL;DR — WP-CLI est l’outil en ligne de commande de WordPress : installer WordPress, gérer plugins/thèmes/utilisateurs/contenu, faire du search-replace conscient de la sérialisation, importer/exporter la base, vider les caches, générer du code de plugin — le tout sans l’interface. Pour un dev moderne habitué au terminal, c’est la manière rapide, scriptable et automatisable d’administrer WordPress. Indispensable en migration, débogage, CI et maintenance de masse.
🎯 Objectifs
- Comprendre ce qu’est WP-CLI et pourquoi l’adopter.
- Connaître les commandes du quotidien (plugin, theme, user, post, db, option, cache).
- Réaliser un search-replace sûr et des exports de base.
- Scripter des tâches répétitives.
1. Qu’est-ce que WP-CLI ?
WP-CLI est un exécutable PHP (wp) qui pilote une installation WordPress depuis le terminal. Il se lance dans le dossier du site (ou avec --path=). La plupart des environnements locaux (LocalWP, wp-env, Docker) l’incluent.
wp --info # infos (versions PHP, WP-CLI)
wp core version # version de WordPress
wp help # aide générale ; wp help <commande> pour le détail💡 Pour un dev React — WP-CLI est au WordPress ce que sont
npm,prisma,vercelCLI à votre stack : l’interface scriptable de la plateforme. Tout ce qui se clique danswp-adminse fait aussi en commande — donc s’automatise (scripts de déploiement, seed de données, CI). Dès que vous répétez une tâche à la souris, demandez-vous s’il existe une commandewp(réponse : presque toujours oui).
2. Installer WordPress en CLI (exemple)
wp core download --locale=fr_FR
wp config create --dbname=wordpress --dbuser=root --dbpass=root
wp db create
wp core install \
--url=http://monsite.test \
--title="Mon site" \
--admin_user=admin \
--admin_password=motdepasse \
--admin_email=moi@exemple.comCinq commandes → un WordPress opérationnel, reproductible (donc scriptable pour recréer un environnement à l’identique).
3. Les commandes du quotidien
| Domaine | Exemples |
|---|---|
| Plugins | wp plugin list · wp plugin install woocommerce --activate · wp plugin update --all · wp plugin deactivate akismet |
| Thèmes | wp theme list · wp theme activate twentytwentyfive |
| Utilisateurs | wp user list · wp user create bob bob@ex.com --role=editor · wp user update 1 --user_pass=nouveau |
| Contenu | wp post list --post_type=page · wp post create --post_title="Test" --post_status=publish · wp post delete 42 |
| Options | wp option get siteurl · wp option update blogname "Nouveau titre" |
| Base | wp db export sauvegarde.sql · wp db import sauvegarde.sql · wp db query "SELECT COUNT(*) FROM wp_posts" |
| Caches/permaliens | wp cache flush · wp rewrite flush |
| Cron | wp cron event list · wp cron event run --due-now |
4. Le search-replace sûr (migration)
La commande phare en migration (ch. 2.6), consciente de la sérialisation PHP :
# Toujours tester d'abord :
wp search-replace 'https://ancien.com' 'https://nouveau.com' --dry-run --all-tables
# Puis appliquer :
wp search-replace 'https://ancien.com' 'https://nouveau.com' --all-tables--dry-run montre ce qui serait remplacé sans rien changer. C’est la bonne pratique : on regarde avant d’agir.
⚠️ Piège —
--all-tablesinclut les tables non préfixées ; sans lui, seules les tables au préfixe WordPress sont traitées, ce qui peut laisser des URLs dans des tables de plugins. À l’inverse, faites toujours un export de base avant unsearch-replacemassif : c’est irréversible sans sauvegarde.
5. Générer et scripter
- Générer du code (avec le paquet scaffold) :
wp scaffold plugin mon-plugin,wp scaffold block mon-bloc,wp scaffold child-theme…créent un squelette prêt à l’emploi (utile en Parties 6-8). - Scripter : comme n’importe quelle commande shell, les appels
wps’enchaînent dans un script (bash) — seed de contenu de démo, réinitialisation d’un site de test, tâches de maintenance planifiées.
# Exemple : réinitialiser un site de test
wp db reset --yes
wp core install --url=… --title="Test" --admin_user=admin --admin_password=admin --admin_email=a@b.c
wp plugin install query-monitor --activate📚 Aller plus loin — WP-CLI est extensible : un plugin peut ajouter ses propres commandes (
WP_CLI::add_command()). Vous pourrez ainsi livrer, avec votre plugin, des commandes d’administration sur mesure (import de données, migrations internes) — très apprécié en projet pro.
✏️ Exercices
- Écrivez la commande pour installer et activer le plugin « query-monitor ».
- Vous migrez
staging.site.comverswww.site.com. Donnez la commande de remplacement d’URL en mode test, puis réel. - Pourquoi WP-CLI est-il précieux pour la CI et les scripts de déploiement ?
✅ Solution
wp plugin install query-monitor --activate.- Test :
wp search-replace 'https://staging.site.com' 'https://www.site.com' --dry-run --all-tables; réel : la même commande sans--dry-run(après unwp db exportde précaution). - Parce qu’il rend toute l’administration scriptable et reproductible (installer, configurer, seed, migrer, vider caches) sans interface — parfait pour automatiser environnements de test et déploiements.
🧠 Quiz de révision
1. Qu’est-ce que WP-CLI ?
L’outil en ligne de commande de WordPress (wp) pour administrer et scripter une installation sans passer par wp-admin.
2. Quelle commande exporte la base de données ?
wp db export fichier.sql (et wp db import pour restaurer).
3. Pourquoi utiliser wp search-replace plutôt qu’un SQL brut ?
Parce qu’il gère la sérialisation PHP (longueurs de chaînes) sans corrompre les données ; --dry-run permet de tester.
4. Comment générer le squelette d’un plugin ?
wp scaffold plugin mon-plugin (commandes scaffold).
5. Un plugin peut-il ajouter des commandes WP-CLI ?
Oui, via WP_CLI::add_command() — on peut livrer des commandes d’administration sur mesure.
Chapitre suivant : Structure des fichiers & du code.