Un outil d'environnement de développement WordPress

Posté par Anthony Baillard Il y a 6 années, 6 mois

Depuis un certain temps, même si nous sommes inconditionnellement fans de Django (https://www.djangoproject.com), nous développons et maintenons plusieurs installations WordPress pour des clients. Nous avons plusieurs fois perdu du temps ou gaspiller des efforts dans l'installation ou la récupération d'une vieille installation de développement. Situation intolérable !

La question était donc :

Comment créer facilement et rapidement de nouveaux environnements de développement WordPress ?

Tout en prenant en compte que certains plugins sont systématiquement utilisés et qu'il serait intéressant de pouvoir utiliser la même installation globale pour tester et développer en parallèle les différents thèmes et sites des clients.

La solution ? Un script shell s'occupant de modifier les environnements de WordPress grâce à des liens symboliques depuis une seule copie d'une archive WordPress. Nous l'avons appelé wp-env et vous pouvez le trouver ici: https://github.com/gotsunami/wp-env.

Quelques explications ?
L'idée générale est de conserver l'intégralité des fichiers à l'exception des répertoires servant au développement : wp-config.php, wp-config/themes, wp-config/plugins.
Pour ce faire, il faut tout d'abord suivre les étapes d'une installation normale de WordPress comme indiqué ici.
Configurez un utilisateur MySQL et une base de données. Installez ensuite les plugins et les thèmes que vous souhaitez voir systématiquement.
Ceci constituera votre environnement par défaut et servira de base à tous vos autres environnements.
Vous pourrez à tout moment le réactiver pour le compléter ou le modifier.

Viens ensuite l'utilisation de wp-env à proprement parler.
Après wp-env init, un répertoire wp-envs est créé à la racine de l'installation WordPress. Ce répertoire contiendra les différentes configurations de WordPress (et notamment wp-envs/default).
Lors de la création de nouveaux environnements, un utilisateur MySQL est créé dans le fichier wp-config.php mais il vous faut le créer vous-même dans votre base de données.
Chaque environnement possède donc un fichier de configuration wp-config.php, une base de données, des thèmes et des plugins distincts. Génial !

Juste une remarque : basculer d'un environnement à l'autre peut poser quelques problèmes avec l'accès aux pages et à l'administration le temps que le cache du navigateur, les cookies et d'autres systèmes équivalents soient mis à jour.

Compléter wp-env avec d'autres outils de développement ?
Pour notre part, nous utilisons notamment git pour suivre les évolutions de nos thèmes. Ce qui fonctionne très bien avec wp-env, en initialisant des répertoires git à la racine de chaque thème.
Afin d'éviter les erreurs de manipulation, vous pouvez également modifier votre prompt pour vous indiquer quel est la configuration active (voir prompt.bashrc dans le repo du projet pour quelques idées).

Et pour le reste, il y a le README !

 

./wp-env
Usage: ./wp-env <command> [<env_name>]

Available commands:
- init: Create the wordpress 'default' environment.

- create: Create a new wordpress environment in <env_name>.
          If a 'default' environment exists, the newly created environment
          is copied from it. Else, it is created from current WP installation.

- activate: Activate an existing wordpress environment.

- list: List the available wordpress environments.

- current: Display currently active wordpress environment.

HOW TO:
  1. Start with './wp-env init'. This will create and activate a 'default' environment equal to your current working WordPress.

  2. Use './wp-env create <env_name>' to create a new environment copied from 'default'. Then edit './wp-envs/<env_name>/wp-env.php' if necessary. You also need to create a new database to match your new settings.
          CREATE database <env_name> CHARACTER SET utf8mb4
            GRANT ALL PRIVILEGES on <env_name>.* to <user>

  3. Use './wp-env activate <env_name>' to load a environment

Commentaires

Pas de commentaires actuellement

Nouveau commentaire

requis

requis (non publié)

optionnel

captcha