Introduction à WP-CLI

Par Julien Maury 15 mars 2014


Petite introduction à l’utilisation de WP-CLI pour les développeurs WordPress. Tuto du week-end car je n’aurai pas le temps cette semaine mais je tenais à partager ceci avec vous.

WP-CLI possède une documentation relativement bien fournie en Anglais : http://wp-cli.org/. Les blogs anglosaxons regorgent de ressources et autres tutoriels en la matière mais on a finalement très peu en Français donc j’y vais de mon petit mot.

WP-CLI est un outil qui permet d’effectuer la plupart des tâches courantes sur une installation WordPress en fournissant une interface de commande aux développeurs et administrateurs. L’affichage est de type « terminal de commandes ».

Si vous n’avez pas d’accès SSH ou que vous n’êtes pas en local vous pouvez lire ce tutoriel mais la mise en application sera impossible. Faites bien attention à ce que vous faites, on manipule des commandes sensibles donc à tester avant d’appliquer sur un site live.

Pré-requis

Comme je le disais dans la note précédente, il vous faudra :

  • soit un localhost soit un serveur de test (si vous voulez vous faire la main, vous faites comme moi, vous prenez un kimsufi de base)
  • des accès SSH et avoir créé un utilisateur autre que root
  • pour les OS Linux et MAC, le terminal, pour Windows l’excellent Putty
  • des connaissances serveur solides ou un apprentissage accéléré, débrouillez-vous là-dessus c’est important !
  • avoir installé apache2,  MySQL, cURL , PHP5 et GIT

Pour les windowsiens

Normalement si vous vous êtes formés un minimum à la gestion des serveurs et que vous évoluez sous Windows vous connaissez déjà mais je vais quand même partager le paramétrage du logiciel Putty pour l’exemple.

La logique de cet OS me dépasse parfois mais il faut bien s’adapter et je trouve qu’un développeur doit savoir évoluer sous plusieurs OS. Après cette considération personnelle « hautement importante », passons aux réglages de Putty :

  1. Sur la page de téléchargement choisissez ‘A Windows installer for everything except PuTTYtel
  2. Installez le soft et entrez dedans ensuite
  3. Sous le menu Session entrez vos informations de connexion
  4. Sous le menu Connexion > Data pour le paramètre auto-login-username entrez ou laissez root pour l’instant
  5. Sous le menu SSH sélectionnez « 2 only » pour le protocole SSH, en général c’est ce qui vous faudra
  6. Revenez sous le menu Session et enregistrez tous ces réglages en entrant un nom dans le champ Save Session puis en cliquant sur save

Voilà Putty est paramétré comme il faut, enfin de manière basique. Le port par défaut est 22. Pour des raisons de sécurité je vous conseille de changer ce port sur votre serveur.

Créer un utilisateur non root

Une fois connecté au serveur via SSH et après avoir rentré votre mot de passe, commencez par créer un nouvel utilisateur qui ne sera pas root. De toute manière pour améliorer la sécurité on peut conseiller d’interdire l’accès SSH en mode root.
Surtout bien créer un utilisateur admin avec les droits suffisants avant d’interdire le root. Dans Putty veillez à bien laissez les fenêtres actives, peu importe qu’il y en ait plusieurs d’ouvertes, mieux vaut ne pas les fermer sans avoir testé la connexion. Dans le pire des cas faut tout réinstaller alors autant éviter cela non?

Pour créer votre utilisateur non root voici les commandes :

root@serveur:~$ adduser votre_nom_utilisateur
root@serveur:~$ groupadd admin
root@serveur:~$ usermod -a -G admin votre_nom_utilisateur

Remarque: pour les windowsiens revenez, après avoir testé que la connexion avec ce nouvel utilisateur fonctionne, dans Putty et créez un nouveau profil pour votre utilisateur.

Installation de WP-CLI

Après avoir réussi les dernières étapes, on peut passer à WP-CLI. Il y aura peut-être quelques subtilités supplémentaires dans un cadre projet client mais la démarche reste globalement la même. Rendez-vous sur votre dossier, par exemple \home\votre_nom_utilisateur\www\ et entrez la commande suivante :

$ curl https://raw.github.com/wp-cli/wp-cli.github.com/master/installer.sh | bash

C’est une commande un peu différente de celle indiquée sur le site de WP-CLI mais on ne fait qu’exécuter le fichier .sh d’installation. Si tout se passe bien vous aurez un ensemble de processus d’installation qui démarrera. Sinon l’erreur vous sera indiquée. Il faudra alors selon les cas inclure une règle dans un des fichiers de WP-CLI (utilisez alors la commande nano pour éditer le fichier) ou alors regarder si vous n’avez pas oublié d’installer un des modules ou des logiciels indiqués dans la partie pré-requis.

Suivre la doc

Vous pouvez ensuite inclure les commandes indiquées par la documentation. Notamment celles-ci :

$ chmod +x wp-cli.phar
$ mv wp-cli.phar /usr/bin/wp

Ces commandes permettent d’utiliser directement wp au lieu de wp-cli.phar.

N’oubliez pas de modifier en conséquence le fichier .bash_profile suivant ce que vous indiquera le terminal. Le reste du travail pour cette partie consiste à lire la documentation.

Commencer à utiliser WP-CLI

Une fois la documentation à peu près assimilée, vous pourrez passer aux commandes WP-CLI. Nous allons voir juste la base de la base :

$ wp core download
$ wp core config --dbname=nom_de_la_base --dbuser=votre_nom_utilisateur --dbpass=votre_mot_de_passe  --dbhost=localhost
$ wp core install --url=http://mon-site.com --title="Encore un super site WP" --admin_name=nom_utilisateur_admin admin_email=votre_mail@mon-site.com --admin_password=votre_mot_de_passe

A chaque commande vous aurez un message de succès ou d’erreur donc vous saurez à quoi vous en tenir :D.

Quelques commandes

La documentation est riche mais voici quelques commandes qui vous serviront bien à n’en pas douter :

$ wp core update
$ wp plugin install jm-twitter-cards --activate
$ wp COMMAND --help
$ wp db dump
$ wp db query "votre_requete_dans_la_base"

Les termes sont assez explicites je pense. Si vous avez besoin de précisions demandez :D. La très grande qualité de l’outil WP-CLI réside dans sa simplicité de sorte que l’on se demande pourquoi cela n’existait pas avant.

Tout est écrit en PHP donc pour ajouter vos propres commandes il suffira d’ajouter votre code.

Et? Après?

Après tout est possible. Plus besoin de se connecter à l’admin de votre site pour le gérer, faire des publications, des mises à jour, etc. Vraiment pratique et clean. Une fois la base saisie, vous accéderez aux tutoriels spécifiques liés à WP-CLI.

Vraiment simple à comprendre puisque moi j’ai compris et de toute manière c’est conçu pour être un outil facile d’accès.

J’espère vous avoir aidé et convaincu de passer à WP-CLI pour vos projets WP. Si vous êtes intéressés par une vidéo faites le savoir. D’ici là amusez-vous bien avec cet outil.


6 commentaire(s)

  1. Chob dit :

    Euh, ça sert à quoi WP-CLI ?

  2. Julien Maury dit :

    Hello Chob:

    "Plus besoin de se connecter à l’admin de votre site pour le gérer, faire des publications, des mises à jour, etc."

  3. Chob dit :

    Je te taquine ! Il faut attendre les dernières lignes du billet pour comprendre à quoi sert le plugin. Et ton référencement, tu y penses ? ;-)

  4. Julien Maury dit :

    T'as raison j'ai zappé cette histoire encore :D

    {edit} : rajouté une note d'explication qui ne fera pas de mal.

  5. Julio Potier dit :

    Hello
    Je n'utilise pas WP Cli car je n'en ai pas spécialement l'occasion, et pour mon local, j'ai besoin de l'UI, le mode console ne me suffirait pas.
    Cela dit, je suis en partie responsable de la version Windows, j'ai commencé à développer cette compatibilité lors du Contributor Day du WordCamp Europe en octobre 2013, avec Scribu.
    Dans tous les cas, testez le au moins une fois avant de le juger, c'est très puissant !
    Merci

  6. Julien Maury dit :

    Tu étais perdu dans les limbes des spams. Je t'ai retrouvé. Chacun sa méthode. Moi j'ai envie de dire que si on est pas à l'aise avec un outil, on le vire. Je suis d'accord qu'il y a encore fort à faire, c'est le début mais on peut rajouter ses propres commandes vu que c'est géré entièrement en PHP, suffit d'étendre la class WP_CLI, suffit quoi :D, je n'ai l'ai pas encore fait pour ma part.

    L'UI WP c'est sympa mais pour les clients et les blogueurs. Je suis blogueur. Je trouve ça sympa. C'est franchement pas demain que je vais m'amuser à publier en ligne de commande. J'apprends les commandes pour parce que c'est dans la doc mais là je vois mal l'intérêt vu que ce n'est pas automatisé.

    En revanche c'est cool d'avoir des interfaces commandes pour wp super cache par exemple et à termes pour plein d'autres plugins. Je veux dire que si on peut se passer de se connecter à l'interface de certains sites, on le fait. Cela peut éviter certaines erreurs 408 ou des plantages ou d'évoluer dans des admins situées à proximité d'un trou noir :D.

    Par ailleurs cela pourrait devenir, si la communauté grandit plus vite, un nouveau spin off de WP comme les BP, WooCommerce and Co avec des plugins dédiés qui viendraient rajouter des commandes.