Il y a encore des développeurs WordPress qui n’ont jamais ouvert un terminal pour autre chose que lancer npm install. C’est dommage, parce que WP-CLI transforme des tâches qui prennent cinq minutes dans l’administration en une commande qui s’exécute en deux secondes. Pas besoin de charger tout le poids de wp-admin, ses scripts et ses requêtes : on parle directement à WordPress depuis la ligne de commande.
Je ne vais pas vous refaire la documentation officielle : elle est déjà excellente. À la place, voici les commandes que j’utilise réellement, chaque semaine, sur les sites que je maintiens — celles qui ont remplacé des habitudes prises dans l’admin.
Créer et configurer un site en une ligne
Pour un environnement de test rapide, plus besoin de suivre l’assistant d’installation en cinq écrans :
wp core download --locale=fr_FR
wp config create --dbname=test --dbuser=root --dbpass=root
wp core install --url=test.local --title="Site de test" \
--admin_user=admin --admin_password=admin --admin_email=admin@test.local
Trois commandes, un site fonctionnel. J’y ajoute souvent wp plugin install et wp theme activate à la suite, dans un petit script bash que je réutilise pour chaque nouveau projet.
Rechercher-remplacer sans tout casser
C’est la commande qui m’a le plus fait gagner de temps : wp search-replace. Contrairement à un remplacement SQL brutal, elle comprend les données sérialisées de WordPress (les options de thème, les réglages de widgets, certains champs personnalisés) et recalcule correctement la longueur des chaînes.
wp search-replace 'http://site.local' 'https://site-production.fr' \
--skip-columns=guid --precise --report-changed-only

L’option --dry-run mérite d’être citée à part : elle affiche le nombre de remplacements sans rien modifier. Je l’utilise systématiquement avant une migration, pour vérifier que je ne vais pas remplacer une chaîne qui apparaît aussi dans du contenu légitime.
Gérer plugins, thèmes et utilisateurs en masse
wp plugin update --allpour mettre à jour tous les plugins d’un coup, à combiner avec unwp db exportpréalablewp plugin list --status=inactive --field=namepour repérer les extensions désactivées qui traînentwp user createetwp user updatepour créer ou modifier des comptes sans passer par l’écran utilisateurswp post list --post_type=page --format=csvpour exporter rapidement une liste de contenus
Sur un parc de sites, ces commandes se combinent très bien avec un script qui boucle sur plusieurs installations et applique la même opération partout — je reviendrai sur cette approche dans un autre article consacré à l’administration d’un parc multi-sites.
Le cache et la base, sans passer par l’admin
wp cache flush vide le cache d’objet quand un plugin de cache le supporte. wp transient delete --all nettoie les transients périmés, une opération que je fais systématiquement après une migration de thème. Et wp db optimize lance un OPTIMIZE TABLE sur toutes les tables — utile sur un site avec beaucoup de révisions accumulées.
wp post delete $(wp post list --post_type='revision' --format=ids) --force
Cette ligne combine deux commandes : la première liste les identifiants de toutes les révisions, la seconde les supprime définitivement. Sur un site de dix ans avec l’auto-save actif, j’ai déjà vu cette commande faire fondre une table wp_posts de plusieurs centaines de mégaoctets.
Débuguer sans quitter le terminal
wp eval et wp eval-file permettent d’exécuter du PHP arbitraire dans le contexte de WordPress, avec accès à toutes les fonctions du cœur. C’est extrêmement pratique pour tester une fonction avant de l’intégrer dans du code, ou pour inspecter une valeur d’option :
wp eval 'var_dump( get_option( "siteurl" ) );'
wp option get siteurl
La deuxième ligne fait la même chose plus proprement, via wp option get, qui existe justement pour éviter d’écrire du PHP à la volée. Je garde wp eval pour les cas où aucune sous-commande dédiée n’existe.
Sur chaque nouveau projet, je crée un fichier
wp-cli.ymlà la racine avec l’URL et le chemin par défaut. Ça évite de retaper--pathet--urlsur chaque commande, et ça réduit nettement le risque de se tromper de site en travaillant sur plusieurs projets en parallèle.
En résumé
WP-CLI n’est pas réservé aux experts en ligne de commande : une dizaine de commandes suffisent à couvrir la majorité des tâches répétitives d’un développeur WordPress. Le vrai gain n’est pas seulement la vitesse d’exécution, c’est la possibilité de scripter, d’automatiser et de reproduire exactement la même opération sur dix sites différents sans en oublier un. Si vous ne deviez retenir que trois commandes pour commencer : wp search-replace, wp plugin update --all et wp transient delete --all.