
WordPress facile : introduction à l’outil de ligne de commande WP CLI
En tant que développeurs Web (WordPress ou non), nous sommes souvent amenés à exécuter des tâches répétitives dans l’interface d’administration d’un CMS (ex : vérifier la liste des plugins à mettre à jour, vider les caches du site). Ces tâches deviennent vite chronophages car elles obligent :
- à naviguer dans l’interface d’administration jusqu’à la page adéquate pour exécuter l’un ou l’autre script d’une part,
- à « subir » le temps de (re)chargement de l’interface dans le navigateur d’autre part (une fois le script lancé, il faut attendre que le serveur retourne une réponse au navigateur et que ce dernier l’affiche, ce qui consomme de la mémoire en exécutant des scripts php dédiés à l’affichage).
L’idéal dans ce cas est de pouvoir s’affranchir de l’affichage dans le navigateur pour se concentrer sur l’essentiel : l’exécution du script.
C’est exactement ce que fait WP CLI ! A l’instar de son cousin Drush pour Drupal, cet outil en ligne de commande vous permet de taper des instructions directement dans un terminal pour que des scripts php soient exécutés.
Préparez-vous à ce que WP CLI révolutionne votre quotidien de développeur WordPress.
WP CLI, présentation d’un outil indispensable
Il existe donc dans le core de WordPress un outil puissant, permettant de maitriser le projet depuis la ligne de commande : le WP CLI.
Véritable couteau-suisse du développeur WordPress, le WP CLI permet de réaliser beaucoup d'actions depuis votre terminal. Vous vous affranchissez donc de l’interface d’administration accessible depuis un navigateur, ce qui permet de diminuer grandement les temps de réponse et de ne pas avoir un affichage « pollué » par d’autres données.
Le principe d’utilisation est extrêmement simple :
- dans un terminal, taper l’instruction « wp nomDeLaCommande »
- l’outil WP CLI va aller rechercher la classe php qui contient l’instruction « nomDeLaCommande » et exécuter le script php qui lui est associé.
Voici une liste non-exhaustive des commandes disponibles (ne pas hésiter à consulter la documentation officielle : WP-CLI Commands)
Gestion des mises à jours
wp core check-update # Vérifier les mises à jour WordPress wp core update # Mettre à jour WordPress wp plugin list # Lister tous les plugins wp plugin update --all # Mettre à jour tous les plugins wp theme list # Lister tous les thèmes wp theme update --all # Mettre à jour tous les thèmes |
Gestion de la base données
wp db check # Vérifier l'intégrité de la DB wp db repair # Réparer la base de données wp db optimize # Optimiser la base de données wp db export backup.sql # Exporter la base de données wp db import backup.sql # Importer la base de données wp search-replace 'https://www.monsite.com' 'https://monsite.local' |
Gestion des utilisateurs
wp user list # Lister les utilisateurs wp user create nom email --role=editor # Créer un utilisateur wp user update admin --user_pass=newpass # Changer un mot de passe wp user delete spam_user --yes # Supprimer un utilisateur |
Gestion du cache
wp cache flush # Vider les caches WordPress wp rewrite flush # Régénérer les règles de réécriture |
Gestion des tâches cron
wp cron event list # Voir les tâches cron wp cron event run wp_scheduled_delete # Exécuter une tâche cron |
Gestion des options du site
wp option list # Lister les options wp option get siteurl # Récupérer la valeur d'une option wp option delete mon_option # Supprimer une option wp option update mon_option # Mettre à jour la valeur d'une option wp option patch mon_option # Ajouter une entrée à la valeur de l'option |
Il est également possible d’utiliser plusieurs commandes WP CLI à la suite et d'utiliser le résultat de la première comme argument de la suivante. Il suffit de suffixer la première commande avec « | xargs ».
Par exemple, l’enchaînement de commandes suivantes permet d’ajouter un utilisateur avec le rôle admin sur tous les sites d'un multisite :
wp site list --field=url | xargs -I {} wp user set-role "mon_username" "rôle_à attribuer" --url={} |
La première instruction liste les différentes URLs de l’environnement multisite tandis que la seconde instruction réutilise cette liste pour que sur chaque site, l’utilisateur « mon username » se voit attribuer le rôle « rôle à attribuer ».
Utiliser WP-CLI pour créer ses propres commandes
Outre les commandes proposées par défaut, l’intérêt de WP CLI est de pouvoir étendre la classe WP_CLI_Command afin de créer des commandes WP CLI personnalisées qui répondent à tous vos besoins.
Nous allons écrire un exemple de commande personnalisée « Hello World » afin de saisir le concept d'implémentation.
Cette commande va définir trois appels différents :
- Appel "hello" :
- wp hello => Affiche le message "Hello World" dans le terminal
- wp hello --name="John" => variante, affiche le message "Hello John" dans le terminal si le paramètre optionnel "--name" est renseigné.
- Appel "greet" :
- wp hello greet => Affiche le message
"Bonjour Friend, bienvenue sur votre site WordPress !
Site : {nom du site}.
Url : {url du site }". - wp hello greet --name="John" => variante, affiche le même message en remplaçant "Friend" par la valeur du paramètre optionnel "--name".
- wp hello greet --loud => variante, affiche le même message, mais en lettres capitales.
- Appel "info" :
- wp hello info => Affiche le message
"=== INFORMATIONS DU SITE ===
Nom : {nom du site}
Version WordPress : { version de WordPress }
Email admin : {email administrateur }
Nombre d’utilisateurs : { nombre d’utilisateurs }"
Notre classe Hello_Command.php est donc constituée du code suivant :
<?php |
Via cette commande simple, nous avons déjà un aperçu de l’utilisation de paramètres optionnels pour enrichir le retour de notre commande et de comment accéder à certaines données du site pour les renvoyer au terminal.
Enfin, de nombreux add-ons tiers (extensions) sont disponibles sur le Web et peuvent être ajoutés au WP CLI pour enrichir ses fonctionnalités. Il conviendra alors de bien vérifier la qualité du code de l'add-on choisi, particulièrement si vous souhaitez l'implémenter sur un site en production.
Un exemple particulièrement intéressant dans le cadre d’une gestion en TMA est l’add-on WP Doctor.
En conclusion, en tant que développeur WordPress, votre temps est précieux et il est toujours appréciable de pouvoir l’optimiser via des outils adaptés. C’est tout l’intérêt de l’outil en ligne de commande WP CLI qui vous permet de vous affranchir de l’interface d’administration de WordPress afin d’aller directement à l’essentiel : exécuter un script php et obtenir une réponse rapide et précise qui ne soit pas noyée dans l’affichage du navigateur.
J’espère que cet article pourra vous aider à transformer l’utilisation de WP CLI en véritable promenade de santé.
Chez Adimeo, une équipe est justement dédiée à WordPress, n’hésitez donc pas à nous contacter pour votre projet avec ce CMS. 😉
Crédit photo : scyther5
