WP-CLI est l’interface en ligne de commande officielle de WordPress. Elle transforme des tâches d’administration répétitives — mises à jour, migrations, gestion des utilisateurs, optimisation de la base de données — en commandes rapides exécutables en quelques secondes. Que vous gériez un seul site ou une flotte de centaines de WordPress, maîtriser WP-CLI est un investissement qui démultiplie votre productivité et élimine les sources d’erreur liées aux interfaces graphiques.
Installation et configuration de WP-CLI
L’installation de WP-CLI se fait en téléchargeant le fichier PHAR depuis wp-cli.org et en le rendant exécutable globalement. Sur Linux/macOS, trois commandes suffisent : téléchargement avec curl, chmod +x pour le rendre exécutable, et déplacement vers /usr/local/bin/wp pour un accès global. Sur Windows, WP-CLI fonctionne avec Git Bash, WSL2 ou PowerShell, mais l’expérience est la plus fluide dans un environnement Linux natif ou sous WSL2.
WP-CLI utilise automatiquement le fichier wp-config.php du répertoire courant pour se connecter à la base de données. Si vous avez plusieurs environnements (local, staging, production), vous pouvez créer un fichier wp-cli.yml à la racine du projet pour définir des alias d’environnement. L’alias @production pointe vers le serveur distant via SSH, ce qui vous permet d’exécuter des commandes directement sur la prod sans avoir à vous y connecter manuellement : wp @production plugin list.
Maintenez WP-CLI à jour avec `wp cli update` pour bénéficier des corrections de bugs et des nouvelles fonctionnalités. La commande `wp cli info` affiche la version installée, la version PHP utilisée et le répertoire courant. Pour les environnements d’hébergement mutualisé où vous n’avez pas accès root, installez WP-CLI dans ~/bin/ et ajoutez ce répertoire à votre PATH dans ~/.bashrc ou ~/.zshrc. La plupart des hébergeurs sérieux proposent WP-CLI préinstallé en 2026.
Gestion des mises à jour WordPress, plugins et thèmes
La mise à jour de WordPress, de tous les plugins et de tous les thèmes en une seule commande est l’une des grandes forces de WP-CLI. `wp core update && wp plugin update –all && wp theme update –all` enchaîne les trois opérations et retourne un résumé clair de ce qui a été mis à jour. Combinée à un script bash planifié avec cron, cette séquence permet d’automatiser les mises à jour mineures sur des sites qui n’ont pas besoin de validation manuelle.
Avant toute mise à jour en production, utilisez `wp plugin update –all –dry-run` pour voir ce qui serait mis à jour sans rien changer. Cela permet de planifier les mises à jour, d’identifier les plugins qui ont des sauts de version majeurs nécessitant une attention particulière, et d’anticiper les éventuels conflits. Complétez cette pratique avec `wp db export backup-$(date +%Y%m%d).sql` pour créer une sauvegarde de la base avant d’appliquer les mises à jour.
Pour les environnements multisite, `wp plugin update –all` met à jour les plugins réseau (network-activated) mais pas forcément ceux activés site par site. Utilisez `wp site list –fields=blog_id,url –format=csv | tail -n+2` pour lister tous les sites, puis bouclez sur les blog_id avec wp –url= plugin update –all pour chaque site. Un script bash simple peut automatiser cette boucle sur l’ensemble du réseau multisite.
Administration des utilisateurs et des rôles
WP-CLI offre un contrôle complet sur la gestion des utilisateurs. `wp user list` liste tous les utilisateurs avec leurs rôles, emails et dates d’inscription. `wp user create identifiant email@exemple.com –role=editor –send-email` crée un nouvel utilisateur et lui envoie ses identifiants par email en une commande. Pour des créations en masse, utilisez `wp user import-csv fichier.csv` avec un CSV au format attendu par WP-CLI.
`wp user update 42 –user_pass= »NouveauMdP@2026″` modifie le mot de passe d’un utilisateur par son ID, sans passer par l’interface graphique. Particulièrement utile en cas d’urgence sécuritaire pour réinitialiser rapidement les mots de passe compromis. `wp user delete 42 –reassign=1` supprime l’utilisateur et réassigne ses articles à l’utilisateur ID 1 (l’administrateur principal), évitant ainsi les articles orphelins.
La gestion des capacités et rôles est également disponible via WP-CLI. `wp role list` liste tous les rôles disponibles. `wp cap add editor manage_options` ajoute la capacité manage_options au rôle éditeur (à utiliser avec précaution). Pour auditer la sécurité, `wp user list –role=administrator –format=csv` liste tous les administrateurs — utile pour détecter des comptes admin créés illégitimement après une compromission. Complétez avec `wp user meta get session_tokens` pour voir les sessions actives.
Maintenance et optimisation de la base de données
La base de données WordPress accumule des données inutiles au fil du temps : révisions d’articles, commentaires spam, transients expirés, options orphelines laissées par des plugins désinstallés. `wp db optimize` lance OPTIMIZE TABLE sur toutes les tables WordPress et récupère l’espace disque fragmenté. Sur des bases volumineuses, cette opération peut prendre plusieurs minutes et verrouille les tables — planifiez-la pendant les heures creuses.
`wp transient delete –expired` supprime les transients expirés qui encombrent la table wp_options. `wp post delete $(wp post list –post_type=revision –format=ids) –force` supprime toutes les révisions d’articles en une commande (attention : irréversible, faites une sauvegarde avant). Pour supprimer les options orphelines de plugins désinstallés, inspectez wp_options avec `wp option list –search= »*plugin_prefix* » –format=table` et supprimez les entrées identifiées avec `wp option delete nom_option`.
La commande `wp db check` lance CHECKSUM TABLE sur toutes les tables et signale les tables corrompues. `wp db repair` tente une réparation automatique. Ces commandes sont cruciales après un crash serveur ou une migration ratée. Pour les migrations entre environnements, `wp db export` et `wp db import` avec `wp search-replace « https://ancien-domaine.com » « https://nouveau-domaine.com » –all-tables` automatisent le remplacement des URLs dans toutes les tables, y compris les données sérialisées.
Gestion du cache et de la performance
WP-CLI s’intègre avec les principaux plugins de cache WordPress. `wp cache flush` vide le cache objet si un backend persistant comme Redis ou Memcached est configuré. Pour WP Super Cache, `wp super-cache flush` vide les fichiers cache statiques. Pour W3 Total Cache et WP Rocket, des commandes dédiées sont disponibles via leurs CLI extensions respectives. Vider le cache automatiquement après chaque déploiement est une bonne pratique à intégrer dans votre pipeline CI/CD.
La commande `wp cron event list` liste les tâches cron WordPress planifiées, avec leurs hooks, arguments et prochaine exécution. `wp cron event run ` force l’exécution immédiate d’une tâche cron, utile pour tester des traitements d’arrière-plan sans attendre leur planification. `wp cron event delete ` supprime une tâche planifiée orpheline. La gestion du cron WordPress via WP-CLI est beaucoup plus fiable que l’utilisation de l’interface graphique pour diagnostiquer les tâches planifiées.
Pour diagnostiquer les problèmes de performance, `wp profile stage –all` (disponible via le package WP-CLI Profile Command) mesure le temps passé dans chaque étape du cycle WordPress : bootstrap, requête principale, rendu du template. `wp profile hook –hook=save_post` liste les callbacks du hook save_post et leur temps d’exécution. Ces informations sont précieuses pour identifier les plugins ou le code custom qui ralentissent le site.
Migrations et déploiements avec WP-CLI
La migration d’un site WordPress entre deux environnements est considérablement simplifiée avec WP-CLI. Le workflow standard : export de la base (wp db export), transfert des fichiers, import de la base (wp db import), puis remplacement des URLs (wp search-replace). Cette séquence peut être scriptée en bash et exécutée en moins de cinq minutes pour des sites de taille moyenne, contre 30 à 60 minutes avec des méthodes manuelles.
Pour les migrations impliquant un changement de protocole (HTTP vers HTTPS) ou de domaine, wp search-replace gère automatiquement les données sérialisées PHP — une des sources d’erreurs les plus courantes lors des migrations manuelles. Utilisez l’option –dry-run pour simuler le remplacement et voir combien d’occurrences seraient modifiées avant d’appliquer les changements. L’option –report affiche un tableau récapitulatif par table.
Les alias WP-CLI dans wp-cli.yml sont particulièrement puissants pour les déploiements sur des serveurs distants. En configurant @staging et @production avec les paramètres SSH, vous pouvez exécuter wp @production core update ou wp @staging db export depuis votre machine locale sans ouvrir de terminal SSH. Couplé à des scripts de déploiement comme Deployer ou Capistrano, WP-CLI devient la couche d’orchestration WordPress de votre pipeline de déploiement.
# Workflow complet de migration WordPress avec WP-CLI
# 1. Sur l'environnement SOURCE
wp db export backup-source.sql
wp option get siteurl
# 2. Transfert via rsync
rsync -avz --exclude=".git" /var/www/source/ user@dest:/var/www/dest/
rsync -avz backup-source.sql user@dest:/var/www/dest/
# 3. Sur l'environnement DESTINATION
wp db import backup-source.sql
# 4. Remplacer les URLs (gere les donnees serialisees)
wp search-replace "https://ancien-domaine.com" "https://nouveau-domaine.com"
--all-tables --report --log=migration.log
# 5. Verification post-migration
wp core verify-checksums
wp plugin verify-checksums --all
wp cron event list
wp cache flush
# 6. Regenerer les salts de securite
wp config shuffle-salts
Automatisation et scripts custom avec WP-CLI
WP-CLI supporte la création de commandes personnalisées (custom commands) via la méthode WP_CLI::add_command(). Ces commandes s’intègrent nativement dans l’interface WP-CLI et bénéficient de la gestion des arguments, des options et de la sortie formatée. C’est l’approche idéale pour encapsuler des tâches métier complexes : « générer 100 articles de test », « exporter les leads du CRM vers WordPress », « synchroniser les produits WooCommerce avec l’ERP ». Ces scripts sont beaucoup plus maintenables que des fichiers PHP ad hoc.
Le mode scaffold de WP-CLI génère du code boilerplate pour les plugins et les thèmes. `wp scaffold plugin mon-plugin` crée la structure d’un plugin avec les fichiers PHP, les tests PHPUnit et la configuration PHPDoc. `wp scaffold child-theme mon-enfant –parent_theme=twentytwentyfive` génère un thème enfant correctement configuré. Ces commandes font gagner du temps sur la mise en place de la structure et garantissent le respect des standards WordPress.org.
Pour les environnements de test et de développement, `wp core multisite-install` crée un réseau multisite en une commande. `wp faker generate posts 50` (via le package WP-CLI Faker) génère 50 articles avec du contenu Lorem Ipsum pour peupler rapidement un environnement de développement. `wp media import ./images/*.jpg –post_id=42` importe en masse des images dans la médiathèque et les attache à un article spécifique. Ces commandes transforment WP-CLI en véritable moteur d’automatisation pour votre workflow de développement WordPress.
Sécurité et audit avec WP-CLI
WP-CLI est un outil précieux pour les audits de sécurité WordPress. `wp plugin list –fields=name,status,version –format=csv` exporte la liste de tous les plugins avec leurs versions, ce qui permet de la comparer avec les bases de données de vulnérabilités comme WPScan ou Patchstack. `wp user list –role=administrator –format=table` liste les administrateurs pour détecter des comptes suspects. `wp option get siteurl` et `wp option get admin_email` vérifient que ces valeurs critiques n’ont pas été modifiées après une intrusion.
La commande `wp checksum core` vérifie l’intégrité des fichiers WordPress core en les comparant aux checksums officiels de WordPress.org. Toute différence indique une modification suspecte du core — soit une personnalisation illégitime, soit une injection de malware. De même, `wp checksum plugin ` vérifie l’intégrité d’un plugin spécifique. Ces vérifications devraient faire partie de votre routine d’audit mensuelle.
Après une compromission suspectée, WP-CLI permet des actions de remédiation rapides : reset des mots de passe de tous les administrateurs avec une boucle sur `wp user list –role=administrator –format=ids`, déconnexion de toutes les sessions actives avec `wp user session destroy –all `, et régénération des clés de sécurité WordPress avec `wp config shuffle-salts`. Ces opérations prennent moins de deux minutes avec WP-CLI contre plus de vingt minutes via l’interface graphique, ce qui est crucial lors d’une réponse à incident.
Commentaires (0)
Laisser un commentaire
Les commentaires sont modérés. Questions WordPress, cybersécurité ou dev web bienvenues.