WP-CLI est l’interface en ligne de commande officielle de WordPress, un outil indispensable pour tout développeur ou administrateur gérant des sites WordPress en production. Contrairement à l’interface graphique du tableau de bord, WP-CLI permet d’exécuter des opérations en masse, d’automatiser des tâches répétitives et d’intervenir sur des sites inaccessibles via le navigateur. En 2026, maîtriser WP-CLI est devenu une compétence fondamentale pour la gestion professionnelle de parcs WordPress, que ce soit pour des agences gérant des dizaines de sites ou pour des développeurs travaillant sur des environnements de staging et de production.
Installation et configuration de WP-CLI en 2026
L’installation de WP-CLI s’effectue en téléchargeant le fichier Phar officiel depuis le dépôt GitHub du projet et en le rendant exécutable à l’échelle du système. Sur les serveurs Linux mutualisés ou dédiés, la commande curl -O permet de récupérer le binaire, que l’on déplace ensuite vers /usr/local/bin/wp avec les droits d’exécution appropriés. Les hébergeurs comme Kinsta ou WP Engine proposent WP-CLI préinstallé dans leurs environnements SSH, facilitant la prise en main immédiate. La vérification de l’installation avec wp –info fournit les détails de version, l’interpréteur PHP utilisé et le chemin vers le fichier de configuration wp-config.php.
La configuration avancée de WP-CLI passe par le fichier wp-cli.yml placé à la racine du projet WordPress. Ce fichier YAML permet de définir l’URL du site, le chemin d’installation, les alias de serveurs distants pour les déploiements SSH, et des paramètres par défaut pour certaines commandes. Les alias SSH dans wp-cli.yml sont particulièrement puissants : ils permettent d’exécuter des commandes WP-CLI sur un serveur distant exactement comme en local, avec une syntaxe du type wp @production plugin list. Cette fonctionnalité simplifie considérablement les workflows de déploiement et de synchronisation entre environnements de développement, staging et production.
La gestion des permissions sous WP-CLI mérite une attention particulière en environnement de production. WP-CLI doit être exécuté avec l’utilisateur propriétaire des fichiers WordPress, généralement www-data ou un utilisateur dédié, pour éviter des problèmes de permissions lors de la création ou modification de fichiers. L’utilisation de sudo avec WP-CLI requiert une configuration explicite et doit être évitée autant que possible. Sur des serveurs cPanel, l’accès SSH avec l’utilisateur du compte cPanel suffit généralement, WP-CLI utilisant automatiquement les bonnes permissions puisque les fichiers appartiennent à cet utilisateur.
Gestion des mises à jour WordPress, plugins et thèmes
La commande wp core update met à jour WordPress vers la dernière version stable en téléchargeant et en appliquant le package de mise à jour officiel. Combined avec wp core update-db pour mettre à jour le schéma de base de données, cette opération peut être scriptée pour s’exécuter automatiquement via cron job après une sauvegarde préalable. La commande wp core version –extra fournit des informations détaillées sur la version installée, incluant la version de la base de données, permettant de détecter des mises à jour de base de données en attente après une mise à jour du core déjà effectuée manuellement via le tableau de bord.
Pour les plugins, wp plugin update –all effectue la mise à jour de tous les plugins installés en une seule commande, affichant un tableau récapitulatif des versions avant et après chaque mise à jour. La commande wp plugin update –all –dry-run simule la mise à jour sans l’appliquer, permettant de vérifier quels plugins seront mis à jour avant d’intervenir sur un site critique. La combinaison de wp plugin list –update=available –format=json avec jq permet d’extraire la liste des plugins disponibles pour mise à jour dans un format exploitable par des scripts de déploiement ou des outils de monitoring d’infrastructure.
La commande wp theme update –all fonctionne identiquement pour les thèmes. Un workflow recommandé pour les mises à jour sécurisées consiste à : (1) effectuer une sauvegarde complète avec wp db export et une copie des fichiers, (2) activer le mode maintenance avec wp maintenance-mode activate, (3) effectuer les mises à jour, (4) vérifier l’intégrité du site avec wp doctor check –all si le package WP-CLI doctor est installé, puis (5) désactiver la maintenance. Ce workflow automatisé en script shell permet de standardiser les opérations de maintenance sur un parc de sites WordPress sans intervention manuelle.
Administration des utilisateurs et des rôles
WP-CLI offre un contrôle granulaire sur la gestion des utilisateurs WordPress. La commande wp user list permet de lister tous les utilisateurs avec leurs rôles, emails et dates de création, avec des options de filtrage et de format (table, csv, json). Pour les audits de sécurité, wp user list –role=administrator –format=json fournit la liste des administrateurs en format exploitable. La création d’utilisateurs en masse depuis un fichier CSV devient triviale avec wp user import-csv, permettant de provisionner des accès pour une nouvelle équipe sans passer par l’interface graphique, particulièrement utile lors de migrations ou de refactorisations d’accès.
La commande wp user update permet de modifier les propriétés d’un utilisateur existant, incluant son rôle, son mot de passe ou ses métadonnées. Pour réinitialiser le mot de passe d’un administrateur verrouillé hors du tableau de bord, wp user update 1 –user_pass=NouveauMotDePasse est souvent la solution la plus rapide. La génération de mots de passe forts peut être combinée avec wp user generate-password pour créer des mots de passe aléatoires sécurisés. Cette commande est particulièrement utile lors d’audits de sécurité pour identifier et réinitialiser les comptes avec des mots de passe faibles ou compromis sur des sites clients.
La gestion des capacités et méta-données utilisateurs via WP-CLI permet des opérations avancées impossibles ou fastidieuses via l’interface. La commande wp user meta get permet d’inspecter les méta-données stockées pour un utilisateur donné, utile pour déboguer des problèmes de permissions dans des thèmes ou plugins utilisant des métadonnées personnalisées. La commande wp user meta set permet quant à elle de modifier ces données directement, sans passer par le code. Pour supprimer des utilisateurs en masse avec réassignation de leurs contenus, wp user delete avec l’option –reassign permet de nettoyer des bases d’utilisateurs test ou spam.
Gestion de la base de données WordPress
La commande wp db export génère un dump SQL complet de la base de données WordPress, équivalent à mysqldump mais avec la connaissance native de la configuration WordPress. Les options –add-drop-table et –no-create-info permettent de personnaliser le format de l’export pour différents cas d’usage : migration complète, import incrémental ou audit de données. La commande wp db import restaure ensuite un dump exporté. Cette combinaison export/import constitue le mécanisme de sauvegarde et restauration de base pour tout workflow de migration de site WordPress, que ce soit vers un nouvel hébergeur ou entre environnements.
La commande wp db search permet de rechercher une chaîne dans toute la base de données, en scannant toutes les tables et colonnes automatiquement. C’est un outil puissant pour auditer une base à la recherche de code malveillant injecté, d’URLs en dur à remplacer lors d’une migration, ou de données personnelles à supprimer pour la conformité RGPD. wp db search –regex supporte les expressions régulières pour des recherches plus sophistiquées. Combinée avec wp db query pour exécuter des requêtes SQL arbitraires, WP-CLI offre un accès complet à la base de données depuis la ligne de commande sans avoir besoin d’un client MySQL GUI.
La commande wp db optimize lance une optimisation des tables MySQL, équivalente à OPTIMIZE TABLE pour chaque table de la base de données. Sur des sites anciens avec de nombreux posts révisionnés ou des tables de commentaires volumineuses, cette opération peut récupérer un espace disque significatif et améliorer les performances des requêtes. wp db repair effectue quant à elle une réparation des tables corrompues. Ces deux commandes sont précieuses pour la maintenance préventive et peuvent être schedulées via cron pour s’exécuter automatiquement lors de périodes de faible trafic, généralement la nuit ou le week-end.
# Mise a jour de tous les plugins avec backup prealable
echo "=== Backup base de donnees ==="
wp db export backup-$(date +%Y%m%d-%H%M%S).sql --add-drop-table
echo "=== Plugins disponibles pour MAJ ==="
wp plugin list --update=available --fields=name,version,update_version
echo "=== Mise a jour plugins ==="
wp plugin update --all
echo "=== Flush cache et rewrite ==="
wp cache flush
wp rewrite flush
echo "=== Verification site ==="
wp option get siteurl
wp core version
Gestion du cache et des performances
WP-CLI permet de gérer les différents niveaux de cache d’un site WordPress depuis la ligne de commande. La commande wp cache flush vide le cache objet WordPress, qu’il soit stocké en mémoire via Redis ou Memcached, ou en fichiers. Pour des plugins de cache comme W3 Total Cache ou WP Rocket, des extensions WP-CLI spécifiques fournissent des commandes de purge adaptées. La commande wp cache delete key group permet une invalidation ciblée d’entrées de cache spécifiques, utile lors de débogage ou pour forcer le rechargement d’une ressource mise en cache sans vider l’intégralité du cache.
La commande wp rewrite flush régénère les règles de réécriture URL d’Apache ou Nginx en mettant à jour le fichier .htaccess (pour Apache) ou en forçant la regénération des règles WordPress. Cette commande est indispensable après une modification de la structure des permaliens, l’activation d’un nouveau plugin modifiant les URLs, ou lors d’une migration où les règles de réécriture précédentes causent des erreurs 404. La combinaison wp rewrite flush –hard force une reconstruction complète depuis la base, utile lorsque le simple flush ne suffit pas à résoudre des problèmes de routing.
Pour l’analyse des performances via WP-CLI, la commande wp profile stage permet de profiler l’exécution de WordPress en mesurant le temps passé dans chaque phase du cycle de chargement : bootstrap, main_query, template. Cette commande, fournie par le package wp-cli/profile-command, identifie les goulots d’étranglement sans nécessiter l’accès à des outils de debug complexes. La commande wp profile hook init liste le temps d’exécution de chaque hook WordPress, permettant d’identifier les plugins ou fonctions qui ralentissent l’initialisation du site, information cruciale pour l’optimisation des performances en production.
Recherche-remplacement et migrations de données
La commande wp search-replace est l’une des plus puissantes et des plus utilisées de WP-CLI. Elle effectue un remplacement de chaîne dans toute la base de données WordPress, avec la particularité cruciale de sérialiser et désérialiser automatiquement les données PHP stockées en format sérialisé dans la base, évitant la corruption des données que provoquerait un simple remplacement SQL. Lors d’une migration de site de http:// vers https://, ou d’un ancien domaine vers un nouveau, wp search-replace est la commande standard qui garantit la cohérence de toutes les références dans posts, métas, options et autres tables.
L’option –dry-run de wp search-replace simule le remplacement sans modifier la base, affichant le nombre de remplacement qui seraient effectués dans chaque table. Cette étape de simulation est indispensable avant tout remplacement en production pour vérifier l’absence de faux positifs. L’option –report-changed-only n’affiche que les tables où des changements ont été détectés, simplifiant l’analyse du rapport. La combinaison –include-columns=post_content,post_excerpt permet de limiter le remplacement à des colonnes spécifiques, utile pour des remplacements ciblés sans risquer de modifier des données structurelles.
Pour les migrations complexes entre hébergeurs, la combinaison de wp db export sur la source, wp search-replace pour adapter les URLs et chemins, et wp db import sur la destination constitue le workflow standard. L’option –all-tables inclut les tables custom créées par des plugins tiers, assurant un remplacement exhaustif. La vérification post-migration avec wp option get siteurl et wp option get home confirme que les URLs principales sont correctement mises à jour. Un script de migration complet encapsulant ces commandes dans un pipeline avec gestion d’erreurs garantit une reproductibilité et une fiabilité maximales des opérations de migration.
Automatisation avancée et scripts WP-CLI
WP-CLI s’intègre naturellement dans des pipelines CI/CD via des scripts shell ou des outils comme GitHub Actions, GitLab CI ou Bitbucket Pipelines. Un workflow typique de déploiement automatisé comprend : activation du mode maintenance, backup de la base via wp db export, déploiement des fichiers via rsync ou git pull, exécution des migrations de base avec wp db migrate (si WP Migrate DB est utilisé), mise à jour des plugins avec wp plugin update –all, et désactivation de la maintenance. Ce pipeline, exécuté automatiquement à chaque push sur la branche main, garantit des déploiements cohérents et reproductibles.
La création de commandes WP-CLI personnalisées permet d’encapsuler des opérations métier spécifiques dans des commandes réutilisables. En définissant une classe PHP héritant de WP_CLI_Command et en l’enregistrant avec WP_CLI::add_command, les développeurs peuvent créer des commandes du type wp myapp generate-report ou wp myapp cleanup-orphaned-media. Ces commandes personnalisées, distribuables via un plugin ou un package Composer, permettent de standardiser les opérations de maintenance et d’administration sur des projets WordPress complexes, avec les bénéfices de testabilité et de documentation inhérents aux interfaces CLI.
Le monitoring des sites WordPress via WP-CLI peut être orchestré depuis un serveur central utilisant des alias SSH pour se connecter à chaque site du parc. Un script de monitoring hebdomadaire pourrait : lister les plugins avec mises à jour disponibles via wp @all plugin list –update=available, vérifier les cron jobs WordPress bloqués avec wp @all cron event list –status=due, et auditer les utilisateurs administrateurs avec wp @all user list –role=administrator. Ces rapports agrégés, formatés en JSON et envoyés vers un outil de monitoring comme Grafana ou une simple alerte email, offrent une visibilité complète sur la santé d’un parc WordPress sans nécessiter d’accès au tableau de bord de chaque site.
Commentaires (0)
Laisser un commentaire
Les commentaires sont modérés. Questions WordPress, cybersécurité ou dev web bienvenues.