Chapitre 1 sur 20

WordPress c'est de la merde ?

Laisser un commentaire

On l’a dit WordPress est ultra populaire. De ce fait, on en parle beaucoup, et on entend tout et son contraire à son sujet. C’est pour cette raison que j’entre direct dans le vif du sujet avec cet article au titre provocateur : c’est de la merde.

Autant dire tout de suite les choses, la tech, c’est comme le foot : chacun a ses supporters et ses détracteurs. Pour en rajouter une couche, non seulement le CMS en lui même est une merde, mais aussi les technos sur lesquelles il est bâti : PHP et MySQL.

La mode dans la tech
La raison finit toujours pas l'emporter

C’est en général le niveau du débat quand une techno est dénigrée. C’est toutefois la meilleure daube dont nous disposions 😘

WordPress tout puissant

WordPress est populaire car il permet à tout un chacun d’installer – gratuitement et sans connaissances technique – son site en quelques clics via une multitude d’hébergeurs et offre ensuite une infinité de thèmes et plugins pour tous les goûts et tous les besoins.

Évidemment, tous les plugins ne se valent pas et les utilisateurs qui n’ont pas de connaissances technique font parfois de mauvais choix. Dès lors, de très nombreux WordPress sont vérolés, obèses, présentent des failles de sécurités où ne marchent plus.

Ça ne vous rappelle pas Windows tout ça ? Le problème est le même. Si on installe n’importe quoi sans prendre garde, il y a forcement des problèmes. Mais soyons honnête, le problème dans ce cas, c’est l’utilisateur, pas l’outil en lui-même.

Il faut aussi admettre que le monde du développement est assez élitiste. WordPress est pensé pour être utilisable par tout le monde. De ce fait, ce n’est pas un outil pour les vrais développeurs qui bossent sur de vrais projets, c’est juste bon pour le blog de mamie.

Comme le dit Alex :

En tant que dev, quand tu dis « Je fais du WordPress », personne ne peut pas savoir si tu fais du dev dessus ou si tu as installé 4 plugins…

Et puis on l’a dit, c’est codé en PHP avec une base de données MySQL ! Sérieusement, quel développeur un tant soit peu sérieux code en PHP ?

Et pourtant

PHP et MySQL sont utilisés notamment par Wikipedia… Facebook aussi utilise PHP. Et si ces technos répondent à leurs besoins – deux des sites les plus visités au monde – on est tenté de croire qu’elles répondent aux besoins de nos projets aussi.

De son côté, WordPress aussi est utilisé par des sites d’envergures :

Il ne s’agit que de quelques exemples, vous trouverez dans cet article une liste bien plus fournie, regroupés par domaine.

Nous voyons bien que, malgré les critiques, ni WordPress ni les technologies sous-jacentes ne se contentent de petits sites personnels. Certains des sites mentionnés dans cette liste sont à très fort trafic (BBC, Vogue, Fortune…), possèdent énormément de contenu (WooCommerce) avec des architecture d’information extrêmement complexe (National Archives).

En plus de cela, la plupart des sites de cette liste appartiennent à des organisations dont le budget n’est pas une contrainte trop pressante (Walt Disney, Sony, Trip Advisor…) et/ou dont les équipes possèdent des connaissances pointues dans les domaines de la sécurité et de la performance web (NGINX, Dyn, Microsoft, Facebook…).

Et pourtant, toutes ces sociétés ont choisi WordPress comme l’outil le plus adapté pour répondre à leur besoin. Cela doit vouloir dire que, quelque part, WordPress n’est pas si merdique que cela.

Sécurité

Il est indéniable que de très nombreux sites présentent des vulnérabilité. Cependant, c’est bien souvent à cause de l’absence de mise à jour ou de plugins de mauvaise qualité.

Inutile de dire que le site officiel de la Maison Blanche n’utiliserait pas un CMS qui est une véritable passoire. Cependant, comme tout logiciel informatique, il arrive que l’on trouve des failles dans WordPress, mais elles sont immédiatement corrigées et le patch est proposé à toutes les installations.

Les plugins sont souvent la cible des hackers car tous ne font pas l’objet de la même attention ni de la même rigueur de la part de leurs développeurs. Là encore, d’une part il incombe à l’utilisateur d’être vigilant sur ce qu’il installe, d’autre part, quel que soit le CMS ou le framework, le code des plugins, modules ou librairies peut contenir des failles et devra faire l’objet de mise à jour régulière.

Performance

On entend souvent que WordPress est lent. Mais rien n’est moins vrai ! Sur Reddit, le fondateur de Craft CMS (un CMS récent destiné aux développeurs) admet sans aucun problème que WordPress est bien plus performant que Craft.

WordPress core is extremely fast, and outperforms Craft, hands down.

La lenteur de WordPress provient toujours des plugins que l’on y installe. À nouveau, c’est exactement comme votre ordinateur. Lorsqu’il est neuf, il est ultra véloce, démarre en quelques secondes et réagit au quart de tour. Mais si vous installez tout et n’importe quoi sans aucune considération, vous obtenez automatiquement une machine très lente.

Le problème n’est ni limité à WordPress, ni même aux CMS. Un plugin n’est autre que du code tiers. La problématique est la même avec tous les frameworks.

Le poids des modules npm
Node.js est souvent moqué pour la lourdeur de ses modules npm

C’est vieux

WordPress est née en 2003. Autant dire qu’il a quelques années derrière lui. Forcément, cela se ressent quand inspecte le code. Oui il y a du code legacy, comme dans tout projet qui a plus de 6 mois.

Premièrement, le code en question a été testé en prod par des centaines de millions de sites, donc on est en droit de croire qu’il est fiable (c’est le plus important).

Deuxièmement, on n’est pas censé modifier le core de WordPress (c’est une très mauvaise pratique), donc on sait qu’il est fiable et on n’aura pas trop à l’avoir sous les yeux (dans votre maison, vous voulez que les fondations soient jolies ou solides ?).

Troisièmement, WordPress est un projet bien vivant, avec une énorme communauté, il évolue donc constamment. Et le code, petit à petit, adopte les bonnes pratiques du développement moderne.

Par ailleurs, pour un projet un tant soit peu sérieux, mieux vaut-il la dernière techno à la mode ou celle qui a été éprouvée sur le champ de bataille, qui fait ses preuves depuis 20 ans et qui sera sûrement encore là dans 10 ans ?

Les bonnes technologies restent
On ne change pas une équipe qui gagne

WordPress sait tout faire

WordPress permet énormément de choses : blog, site vitrine, site e-commerce, sites communautaire, e-learning. Bref, la liste est longue. On peut même n’utiliser que le back-office et requêter les données via son API avec une interface front-end en JS (React, Vue & co.).

Malheureusement, WordPress offre tellement de possibilités que certains ne voient même plus les cas dans lesquels il n’est pas adapté. C’est malheureux car ces cas dans lesquels de mauvais choix techniques sont effectués rendent le développement complexe et fastidieux et mènent parfois tout droit à l’échec du projet.

Chaque technologie possède ses domaines de prédilections. Je suis un développeur spécialisé en JavaScript et Node.js, pourtant je reconnais que, souvent, WordPress est la meilleure solution technique face à tel ou tel besoin.

En effet, WordPress répond souvent bien aux besoins des projets car il intègre certaines fonctionnalités par défaut. WordPress est parfait pour le blogging et l’éditorial (il peut gérer le WYSIWYG, le HTML ou le markdown), il gère les commentaires, peut inclure un forum, faire du e-commerce, gérer différents niveaux d’utilisateurs et être étendu presque sans limites…

Par exemple, pour un site de e-commerce, si je veux gérer un programme de fidélité, j’ai un plugin dédié à cet usage dans WordPress. Avec Node, il faudrait que je le code from scratch. Techniquement intéressant peut-être, mais loin d’être la solution la plus efficace…

En tout état de cause, le bon outil est :

Vers le framework WordPress

Il existe deux mondes WordPress :

C’est évidemment cette deuxième voie que nous allons explorer dans les prochains chapitres. D’ailleurs, commençons par définir ce qu’est WordPress : framework ou CMS ?

Commentaires

Rejoignez la discussion !

Vous pouvez utiliser Markdown pour les liens [ancre de lien](url), la mise en *italique* et en **gras**. Enfin pour le code, vous pouvez utiliser la syntaxe `inline` et la syntaxe bloc

```
ceci est un bloc
de code
```