Présentation
Présentation
01 min
Pour bien démarrer
Bedrock
12 min
Wordplate
31 min
WP-CLI
11 min
Librairies utiles
Extended ACF
15 min
Timber
27 min

Dans ce chapitre nous allons découvrir Bedrock, un kit de démarrage pour WordPress qui intègre les outils de développement modernes et qui propose une meilleur structure de dossiers.

Le problème avec WordPress classique

La principale problématique que l'on va rencontrer avec une installation WordPress classique est la structure des dossiers. Cette structure est problématique à plusieurs niveau :

  • La structure de base implique que tous les fichier sont accessibles depuis le serveur web (la pratique courante est de créer un dossier public et de placer les sources PHP un niveau au dessus)
  • Le manque de séparation empêche le versioning car il est nécessaire de versionner le code des plugins et du core.

Ce qu'apporte Bedrock

Bedrock va permettre de résoudre en partie les problèmes remontés précédemment et va aussi apporter quelques fonctionnalités supplémentaire.

Une installation plus aisée

Le premier point est la simplification de l'installation qui peut se faire au travers de composer

composer create-project roots/bedrock

Cette commande va installer WordPress ainsi que quelques autres petites dépendances comme roots/wp-password-bcrypt qui permet de changer la méthode de hashage des mots de passe.

Une meilleur structure de dossier

Après votre installation vous remarquerez que la structure des dossiers n'est pas forcément celle que l'on est habitué à rencontrer.

site/
├── .env
├── config/
│   ├── environments/
│   │   ├── development.php
│   │   ├── staging.php
│   │   └── production.php
│   └── application.php   # Primary wp-config.php
├── vendor/               # Composer dependencies
└── web/                  # Virtual host document root
    ├── app/              # WordPress content directory
    │   ├── mu-plugins/
    │   ├── plugins/
    │   ├── themes/
    │   └── uploads/
    └── wp/               # WordPress core

Cette structure permet d'apporter plus de flexibilité dans l'utilisation de WordPress et dans sa configuration sur plusieurs environnement.

  • Le dossier web servira de racine pour notre serveur web. Cela permet de placer des fichiers "critiques" un niveau au dessus de la racine web et permet d'éviter d'exposer nos dépendances mais aussi certains fichiers sensibles.
  • Le dossier web/wp contiendra le coeur de WordPress et est automatiquement généré depuis composer. Cela permet de mieux contrôler la version de WordPress et de pouvoir appliquer des contraintes sur les versions qui sont supportées par le projet.
  • Le dossier config contiendra la configuration de notre WordPress avec la possibilité de changer la configuration suivant l'environnement utilisé
  • Le fichier .env permet de configurer le projet en l'absence de variable d'environnement (c'est ici que l'on mettra la configuration de notre base de données par exemple).

Le travail sur les thèmes et les plugins se fera dans le dossier web/app/themes, web/app/mu-plugins et web/app/plugins.

WPackagist pour gérer les plugins

Un dépôt supplémentaire est aussi automatiquement ajouter à votre fichier composer.json et vous permettra de gérer vos plugins comme des dépendances à votre projet. Pour installer un plugin, il suffit de le rechercher sur Wpackagist et de l'installer comme vous le feriez pour une dépendance classique :

composer require wpackagist-plugin/wp-migrate-db

Le plugin ira automatiquement se placer dans le bon dossier et il vous suffira de l'activer. Vous pourrez aussi gérer ses mises à jour en utilisant composer et en vérifiant les versions qui sont supportées par votre application.