Skip to Content

Chapitre 4.3 — WP-CLI : la ligne de commande

⏱️ TL;DRWP-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, vercel CLI à votre stack : l’interface scriptable de la plateforme. Tout ce qui se clique dans wp-admin se 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 commande wp (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.com

Cinq commandes → un WordPress opérationnel, reproductible (donc scriptable pour recréer un environnement à l’identique).


3. Les commandes du quotidien

DomaineExemples
Pluginswp plugin list · wp plugin install woocommerce --activate · wp plugin update --all · wp plugin deactivate akismet
Thèmeswp theme list · wp theme activate twentytwentyfive
Utilisateurswp user list · wp user create bob bob@ex.com --role=editor · wp user update 1 --user_pass=nouveau
Contenuwp post list --post_type=page · wp post create --post_title="Test" --post_status=publish · wp post delete 42
Optionswp option get siteurl · wp option update blogname "Nouveau titre"
Basewp db export sauvegarde.sql · wp db import sauvegarde.sql · wp db query "SELECT COUNT(*) FROM wp_posts"
Caches/permalienswp cache flush · wp rewrite flush
Cronwp 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-tables inclut 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 un search-replace massif : 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 wp s’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

  1. Écrivez la commande pour installer et activer le plugin « query-monitor ».
  2. Vous migrez staging.site.com vers www.site.com. Donnez la commande de remplacement d’URL en mode test, puis réel.
  3. Pourquoi WP-CLI est-il précieux pour la CI et les scripts de déploiement ?

✅ Solution

  1. wp plugin install query-monitor --activate.
  2. 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 un wp db export de précaution).
  3. 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.