J’ai récemment fait la découverte d’un plugin excellentissime et je tenais à vous en faire part. Ce n’est pas un plugin qui va vous permettre d’ajouter des fonctionnalités à votre WordPress, mais plutôt un outils qui va vous faciliter la vie. Explications…
Pourquoi des fichiers de configuration ?
Normalement, si vous voulez bien faire les choses, lorsque vous développez un site web sous WordPress, vous devez procéder par étapes :
- Développer le thème, configurer WordPress et ses plugins sur un environnement de développement (en général en local),
- Déployer le site sur un environnement de pré-production pour faire des tests et permettre au client de saisir ou retoucher ses contenus,
- Déployer le site finalisé en production, donc le mettre en ligne et le rendre accessible à tous.
Lorsque vous faites ça dans cet ordre et que vous livrez votre site sur les environnements de preprod puis prod, vous livrez l’ensemble des fichiers et de la base de données (SQL), c’est donc assez simple. En revanche, comment faire si 1 mois, 6 mois ou 1 an après vous devez faire évoluer votre site en lui ajoutant des fonctionnalités ?
Vous devriez, pour bien faire, procéder de la même manière que lors de la création (dev -> preprod pour tests -> prod), mais c’est compliqué car votre client (par exemple) doit pouvoir continuer à exploiter son site en saisissant du contenu, les utilisateurs doivent pouvoir commenter, etc. On ne peut donc pas rapatrier la base de prod en dev pour tout configurer, tester et re-livrer la base 2 semaines après. Cela impliquerait d’écraser les contenus et commentaires des deux dernière semaines lors de la livraison. Pire, imaginez qu’il sache d’un site de e-Commerce ! C’est donc inconcevable.
Ceux qui connaissent Drupal (un autre CMS tel que WordPress, mais différent…) savent qu’il existe un système permettant de sauvegarder des « packages de configuration » dans un fichier et donc d’utiliser ce fichier pour livrer les paramétrages sur un autre environnement.
Il est nécessaire de comprendre que dans un CMS, il y a une partie de la base de donnée dédiée aux contenus ; les articles, les pages, les catégories, les tags, les customs post types, etc. et une partie dédiée à la configuration WordPress en général ; les menus, les widgets, les plugins, et parfois les types de taxos et contenus mais on ne s’y attardera pas ici. Les fichiers de configurations appelés FEATURES dans Drupal et BUNDLE dans le plugin WordPress WP-CFM permettent donc de packager à l’intérieur de fichiers les paramètres de configurations.
Grâce à cette méthode, vous l’aurez compris, fini les rapatriements de base complète (paaaaas biennnn) et les heures passées à dupliquer à la mano la configuration d’un plugin à l’identique… vous allez voir comment enregistrer des paramétrage et les livrer en 2 minutes chrono.
THE plugin
Le plugin s’appel donc WP-CFM, il a été réalisé par un développeur WordPress – Matt Gibbs – qui est visiblement brillant.
Son fonctionnement est très simple, vous installez le plugin (dur, je sais, mais vous pouvez le faire), vous l’activez (oulalala…) et vous vous rendez dans Réglages -> WP-CFM
Un message vous demande de créer un dossier « config » dans wp-content et lui donner les droit en écriture. Normalement vous n’avez rien à faire en local car vous être propriétaire de la machine, si vous êtes sur un FTP il faut mettre le CHMOD à 755.
Cliquez maintenant sur Add Bundle pour créer un premier package d’options.
Ici, j’ai choisi d’enregistrer les options de configuration de mon plugin Adblock Notify, je n’ai que 2 lignes d’options pour mon plugin, mais certains en utilisent une centaine. Il va donc falloir être patient et sélectionner toutes les options associées à un ou plusieurs plugins.
Donnez un nom à votre bundle et enregistrez le.
Vous voyez maintenant 3 boutons apparaître à droite de la ligne bleue du titre.
- Diff – permet de comparer les options stockés en base de données et celles stockées dans le fichier de bundle. Vous ne verrez rien pour le moment car il n’y a pas de bundle.
- Push – Permet d’enregistrer les infos de la base de données dans le fichier de bundle.
- Pull – Permet d’enregistrer les infos du fichier de bundle dans la base donnée. Cette option est disponible quand il y a un fichier correspondant au bundle, ici ça n’es pas encore le cas car nous ne l’avons pas créé.
Cliquez maintenant sur PUSH pour créer le fichier de configuration. En cliquant sur DIFF vous pourrez voir que les informations contenus dans le fichier et celles de la base sont identiques. Nous avons donc bien créé notre package.
- Pour déployer vos paramétrage sur un autre environnement, procédez de la manière suivante :
- Livrez vos fichiers ; plugins, thème et le dossier config que nous avions créé plus haut avec les bundles que vous y avez enregistré.
- Activez le plugin WP-CFM ainsi que les plugins que vous avez éventuellement ajoutés (et dont les options sont packagées).
- Rendez-vous dans Réglages -> WP-CFM
- Facultatif : cliquez sur le bouton DIFF du bundle que vous voulez déployer pour voir si les options sont bien différentes entre la base et le bundle
- Cliquez sur le bouton PULL du bundle que vous voulez déployer pour que vous options soient enregistrées en base.
C’est fini, vous avez livré votre travail sans accroc et en quelques cliques seulement !
Bonus
Si vous êtes utilisateur de WP-CLI (déploiement en ligne de commande), le plugin est compatible !
wp config pull <bundle_name> wp config push <bundle_name>
Intéressant !