Chapitre 2 sur 20
Moteur de blog, CMS ou Framework ?
À sa sortie en 2003, WordPress est initiallement conçu comme un moteur de blog. Au fur et à mesure, avec son écosystème grandissant et l’ajout de fonctionalités au cœur même de l’outil, on le considère souvent comme un CMS.
Cependant, le fait qu’il soit si extensible par l’ajout de code permet clairement de le ranger dans la catégorie des frameworks.
WordPress est un framework
D’après Wikipedia, voici ce qu’est un framework web :
Un framework web est un framework créé pour supporter le développement d’applications web, notamment des sites, des webs services et des API.
Comme tout framework web qui se respecte, WordPress offre toutes les fonctions de base nécessaire à un projet web.
Routing : gestion par défaut des routes avec pretty url, possibilité d’ajouter des endpoint, de réécrire des routes, capturer les paramètres d’url etc.
ORM & base de données : 99% du temps l’accès et la sauvegarde des données de la BDD est totalement transparante. On dispose d’un outil efficace pour ajouter et récupérer des données personnalisées (
WP_Options
) pour tous les types d’objets (post, utilisateur…). On a aussi accès àWPDB
qui n’est autre que l’ORM de WordPress.Gestion des utilisateurs : gestion totalement intégrées des comptes utilisateurs avec cinq niveaux de permissions par défaut.
Templating : la fameuse hiérarchie WordPress est le système de template de la plateforme. Tout passe par le
index.php
et est ensuite délégué à différents fichiers selon une hiérarchie spécifique. On peut depuis tous ces fichiers inclure nos propres partials afin de ne pas dupliquer le code et améliorer l’organisation du projet.Écosystème de plugins : tout framework possède un système de module, bundle ou plugins permettant de lui ajouter des fonctionalités. WordPress possède une des offres les plus riches dans ce domaine.
Gestion des médias : un autre point dans lequel WordPress se distingue. Sa bibliothèque de gestion des médias est très riche et possède de très nombreux plugins pour lui ajouter des fonctionnalités (compression, conversion en WebP/AVIF, catégorisation…).
Gestion du cache : WordPress inclut d’office un cache objet. En outre, de très nombreux plugins permettent de configurer d’autres couches de cache adaptées à votre hébergement.
API REST.
WordPress est un peu un cas à part, on peut dire qu’il s’agit d’un framework très spécialisé qui intègre un CMS. Le fait qu’il soit très spécialisé le rend encore plus efficace pour les projets auxquels il est adapté.
Mieux qu’un framework pur ?
On ne peut s’empêcher de le comparer aux grands frameworks PHP tels que Symfony, Laravel ou CakePHP. Il n’y a pas de mieux ou moins bien, je m’explique.
Comme WordPress est spécialisé, on déconseillera son usage pour des projets métiers très spécifiques. Par exemple, lorsque j’ai travaillé sur une plateforme de SMS Marketing (achat et expédition de campagnes de SMS), WordPress ne me semblait pas adapté. Ça aurait sûrement pu fonctionner, mais j’aurais du lutter contre le CMS tout en tirant peu profit de ce qu’il a à offrir.
Le e-commerce est un assez bon exemple. Cela reste en effet un site web, mais c’est plus complexe qu’un classique site vitrine. Lorsque l’on veut créer un site e-commerce, deux choix sont possibles : coder from scratch ou utiliser un outil spécialisé dans le e-commerce.
Quel outil pour quelle situation ?
Il n’y a fondamentalement pas de mieux ou moins bien. Par exemple, en 2019, quand j’ai développé la plateforme de SMS marketing, WordPress n’était pas indiqué. Le client arrive sur le site, achète des crédits de SMS, importe ses contacts, rédige son SMS et programme son envoi. Chaque utilisateur dispose d’un dashboard permettant de visualiser toutes les statistiques de ses campagnes.
On comprend ici tout de suite que le besoin est très spécifique et les solutions clefs en main n’offriront pas les fonctionnalités nécessaires (du moins seulement une infime partie). De plus, il faudrait parfois lutter contre le fonctionnement interne pour arriver à nos fins.
Lorsque l’on sort totalement du champ d’application de l’outil, il est souvent plus rapide de créer from scratch que d’adapter l’existant. Dans ce cas, on se tourne vers notre langage et framework de prédilection.
En revanche, lorsque j’ai créé le site du joaillier Laurenz Baumer, lequel vend des produits, la question ne s’est pas posée un seul instant. La vente de produit est un grand classique, autant bénéficier d’outils éprouvés plutôt que de perdre du temps à en créer de nouveaux.
Frameworks e-commerce
Pour être tout à fait juste, la plupart des frameworks populaires (quel que soit le langage) disposent d’outils dédiés au e-commerce afin de gagner en efficacité. Ces outils offrent une boîte à outils répondant aux besoins habituels des sites e-commerce.
Dans le monde PHP on a par exemple Bagisto (Laravel) ou Sylius (Symfony). Comme je l’ai déjà mentionné, le meilleur outil est celui qui est adapté au projet et maîtrisé par l’équipe (afin d’être fiable et efficace).
Ces frameworks proposent encore – à mon avis – trop peu de choses “out of the box” comparé à WordPress et vont nécessiter de maîtriser le framework sous-jacent pour réellement ajouter nos propres briques de code.
CMS concurrents
Il y a également la concurrences d’autres CMS, généralistes : Drupal, Joomla, CraftCMS, Spip ; ou spécialisés : Magento, PrestaShop etc. La liste est longue, CloudWays propose une comparaison des plus populaires.
On ne peut évidemment pas affirmer que WordPress est simplement mieux que toutes ces solutions. Chacune possède ses forces et faiblesses, nécessite plus ou moins de prise en main et excelle dans un domaine particulier.
Spip par exemple, dont le développement, français 🇫🇷, a commencé 2 ans avant celui de WordPress est très pointu en matière éditoriale et de gestion de contenu. Il est à ce titre utilisé par certains journaux (Le Monde diplomatique) et la plupart des ambassades française.
[Il] se distingue par le soin apporté aux standards de l’édition (respect des règles typographiques, organisation des rôles des participants) et par l’attention portée au multilinguisme et aux mécanismes favorisant l’édition collaborative.
Comme pour toute considération, le bon CMS est celui qui est maintenu, adapté au projet et maîtrisé par l’équipe de développement. WordPress dispose d’une énorme communauté et d’un nombre de plugins faramineux.
WordPress est généraliste et extensible dans l’âme. Par exemple si l’on souhaite ajouter un forum et des fonctionnalités sociales à un site e-commerce pour créer une communauté : aucun problème. Pour Magento, PrestaShop et d’autres, il faudrait simplement se tourner vers des outils externes, et se faisant, perdre la possibilité d’avoir un unique compte utilisateur ou devoir batailler pour partager les informations de la base de données.
C’est à mon sens toute la force de WordPress : fournir un outil de base simple et performant, extensible presque à l’infini et activement soutenu par une communauté gigantesque.
Bien choisir
Au risque de me répéter, le bon outil est un outil adapté ! On n’utilise pas un marteau avec des vis. J’ai donc plusieurs solutions que j’utilise en fonction du type de projet.
Je suis spécialiste JavaScript, de ce fait :
- si le besoin est spécifique et qu’il va y avoir beaucoup de logique métier, alors je pars sur un développement custom en Node.js (remplacez par le langage/framework de votre choix).
- si WP répond aux besoins du projet et qu’on veut simplement se concentrer sur l’UX… alors WordPress !
- dans d’autres cas si c’est adapté, je favorise même la Jamstack et les sites statiques.
Dans le prochain chapitre, nous allons aborder explorer plus en détails le cas particulier des sites e-commerce.
Commentaires
Rejoignez la discussion !