Développer des sites WordPress, en 2020 ?

À l’heure où PHP 7.4, tout fraichement publié, permet un typage toujours plus stricte, une sécurité et des performances accrues, ne serions nous pas en droit de se demander s’il est toujours intéressant de développer des sites web à fortes valeurs ajoutés avec WordPress, en 2020 ?

Quelques petites précisions

Tout d’abord, cet article n’a aucunement pour but de critiquer de manière subjective WordPress, parce que « WordPress c’est nul », mais bien d’apporter une solution technique, à un problème donné : Concevoir un site vitrine de manière professionelle avec WordPress en 2020.

J’entends par professionnel, un site qui soit codé de manière propre et compréhensible, maintenable, le plus sécurisé et performant possible.

Sur le papier, WordPress présente quelques grosses lacunes, voici une liste non exhaustive de celles-ci :

  • L’usage de fonctions et variables globales y est omniprésente.
  • Son système de hashage de mot de passe est disons très vieillissant.
  • Son arborescence est loin d’être la plus sécurisée, index.php se trouvant à la racine du projet.
  • Ses beaucoup trop nombreuses requêtes SQL pour un simple page de contenu, dû à une structure de base de données « la plus simple possible ».
  • Sa syntaxe verbeuse et très procédurale.

Mais alors, pourquoi WordPress équipe-t-il aujourd’hui plus de 25% du web ?

Je crois que la principale raison de cette popularité réside dans le rapport simplicité / puissance / liberté – flexibilité / prix imbattable que l’outil offre jusqu’à présent. En effet, créer un site WordPress est aujourd’hui à la portée de quiconque s’en donnerait les moyens, sans avoir besoins de la moindre compétence technique. C’est d’ailleurs certainement cet avantage qui lui vaut une si mauvaise réputation au seins de la communauté des développeurs.

Bon, c’est très bien tout ça, mais si WordPress est si catastrophique, d’un point de vue technique, mais que les clients veulent un WordPress, parce que bien souvent ils connaissent déjà et que ça leurs permettra d’être autonome sur la gestion de leur contenu, on fait comment ?

On développe tout nous même ?

On ne va pas se le cacher, je crois que mon rêve le plus secret est bien celui-ci. Mais, je vois deux problèmes à cela :

  1. Le budget client, pour ce genre de projet, de type site vitrine, le budget est souvent restreint au strict nécessaire. Tout redévelopper signifierait repenser tout un backend, un back-office, avec une gestion des contenus, adaptée à la situation simple, et intuitive.
  2. On ne réinvente pas la roue ! Si le client voulait une Ferrari, le budget serait différent, la conception et la réponse technique aussi. Seulement, la 308 de monsieur tout le monde roule parfaitement, ce n’est pas la plus performante, mais elle n’a plus à faire ses preuves.

Je tiens malgré tout à préciser que cette réflexion n’est valable que lorsque l’usage d’un CMS (WordPress ou autre) est adapté. Nous développons également des applications métiers complexes, et dans ce cas, nous choisissons une technologie adaptée aux besoins du projet.

On cherche des solutions, pour limiter les dégâts

Pour cela, nous allons devoir nous plier à quelques règles :

1. Limitation au maximum de l’usage des plugins

Non pas qu’ils soient tous inutiles, mais l’usage cumulé de multiples plugins est une des causes des grosses lenteurs d’un site WordPress. C’est aussi un point d’entrée rêvé pour attaquer notre belle application.

2. On bloque toutes les permissions en écriture sur le serveur de production !

Oui, cela va à l’encontre de ce que préconise WordPress, il ne sera plus possible de lancer les mises à jours depuis l’administration, mais pas d’inquiétude, nous règleront ça plus tard.

3. On implémente une logique Vues – Controllers

Grâce au moteur de template Twig et à son extension pour WordPress Timber. Cela va nous permettre de gérer bien plus facilement nos différents templates, de séparer notre logique métier de notre affichage, et par conséquent d’avoir un code beaucoup plus lisible et maintenable.

4. On utilise Webpack + Babel pour la gestion de nos assets.

Cela va nous permettre d’écrire du javascript moderne (ES6 +), d’utiliser un pré-processeur CSS comme SASS. Toujours dans l’optique de nous simplifier le développement, pour le projet soit le plus facilement maintenable. L’autre très gros avantage de Webpack est sa capacité à minifier tout nos fichiers de styles et nos scripts dans un seul fichier, optimisé et compatible avec tous les navigateurs récents. Cerise sur le gateau, sa gestion des versions ! Fini ce douloureux moment où il faut expliquer à votre client de vider ses caches pour voir les nouvelles modifications !

5. On utilise un plugin…

Oui vous ne rêvez pas, mais croyez moi, celui là vaut le détour ! Il s’agit d’ACF, qui vous permettra de gérer ultra facilement l’ajout de champs additionnels pour vos différents type de contenus. Par défaut, ces champs sont stockés en base de données, je vous conseil de n’utiliser cette méthode qu’en développement, et de déployer en production un fichier PHP généré par ACF. Toujours dans cette optique de performances. Moins nous avons d’informations en base de données, mieux notre site se portera !

6. Versioning, Intégration et Déploiement Continu !

Quoi de mieux que d’automatiser les taches fastidieuses du déploiement et du build ? Cela nous permettra également de maintenir le site à jour, en installant les mises à jours en local, afin de les tester et de vérifier la compatibilité, avant de pouvoir déployer, avec un utilisateur ayant lui, les droits d’écritures sur le serveur en production.

Avec ces quelques outils, vous voilà paré pour développer de magnifiques sites avec WordPress, de manière professionnelle, en 2020 ! Un repository Git comprenant les différents points évoqués est d’ailleurs disponible ici. Il comprends un script d’installation automatisant la configuration, ainsi qu’un starter thème, basé sur le starter thème officiel de Timber.

Pour conclure

WordPress est un bon outil, répondant à un besoin spécifique : développer un site vitrine complet, permettant à votre client d’être un maximum autonome dans l’édition de celui-ci, à moindre coût.

En revanche, c’est un outil à proscrire dès que votre projet sors de ce cadre. Il n’est techniquement pas impossible de s’en sortir. Mais cela s’avèrerait contre productif : les coûts de développement spécifiques et de maintenances, seraient bien trop grands par rapport à la demande initiale. Un développement sûr mesure serait alors préconisé.

Enfin, j’espère avoir réussi à vous montrer que choisir de développer des sites WordPress n’est pas une solution de facilité et qu’il est tout à fait possible d’obtenir un résultat professionnel tout à fait satisfaisant.

Pour aller plus loin

  • Je vous conseille la vidéo de l’excellent Grafikart, portant sur le sujet.
  • La documentation de Timber ainsi que celle de Twig.
  • Une CLI pour Timber.
  • La documentation d’ACF
  • Bedrock, un framework basé sur WordPress visant à résoudre les principales lacunes de celui-ci. C’est certainement la prochaine étape de mon starter repository, la migration vers Bedrock.

Nous contacter

Nos références