loading…
  • Auteur
    Hugues Lismonde
  • Date
    22.05.2024
  • Temps de lecture
    4 min
  • Catégories
    Article technique

Headless & Wordpress

Headless & Wordpress
Comprendre notre infrastructure

Introduction

EPIC utilise WordPress pour gérer le contenu des sites web que nous produisons, et ce, depuis plusieurs années maintenant, en mode “headless”. Cette approche permet de découpler le développement, mais ne se fait pas sans précautions.

Pourquoi WordPress?

WordPress reste le CMS le plus utilisé au monde et bénéficie d’une communauté importante qui le fait évoluer en permanence. De nombreux plugins commerciaux ou libres sont disponibles, couvrant un large éventail de fonctionnalités (malheureusement pas toujours “aware” du headless, on y reviendra…). L’expérience administrateur reste l’une des meilleures parmi les CMS établis.

L’un dans l’autre, WordPress reste, actuellement la meilleure solution pour EPIC pour gérer du contenu de manière ergonomique et efficace.

Pourquoi headless?

Un CMS headless permet de séparer la couche de présentation (frontend) de la couche de gestion du contenu (backend). Cela permet de gérer le contenu d’un côté et de l’exploiter sur différents canaux digitaux. Cette séparation facilite le travail des développeurs, qui peuvent se concentrer sur leurs expertises respectives, et accélère le développement. Le contenu, structuré et non plus intégré aux templates comme dans un CMS monolithique, peut être réutilisé de multiples façons, ouvrant de nombreuses possibilités impossibles auparavant.

En termes de performance, cette découpe facilite l’introduction de nombreuses techniques d’optimisation à différents niveaux, permettant une évolutivité beaucoup plus dynamique.

Des alternatives ?

En tenant compte qu’à l’origine WordPress n’est pas un CMS headless et que de nombreuses offres apparaissent régulièrement sur le marché, pourquoi choisir WordPress ? Malheureusement, la plupart des alternatives montrent des lacunes importantes qui les rendent inacceptables pour EPIC.

  • Immaturité: nombre de ces CMS sont très (trop) récents et ne sont pas encore suffisamment stables. La communauté derrière, bien que dynamique, reste trop restreinte et n’offre pas de garantie sur la pérennité de l’outil.
  • i18n: en Belgique et bien souvent en Europe, il est absolument nécessaire pour un CMS qu’il permette de gérer les traductions du contenu pour pouvoir offrir un site multilingue. La plupart des CMS nativement headless sont soit monolingues soit offrent un système de gestion de traduction beaucoup trop simpliste que pour être exploitable. WordPress avec Polylang Pro est une solution puissante et souple qui répond à pratiquement toutes les exigences liées à cette problématique.
  • Prix et ouverture: beaucoup de ces CMS headless sont soit complètement propriétaires soit “open-core”, offrant un petit set de fonctionnalités gratuitement et gardant la plupart des fonctionnalités avancées derrière un abonnement. Certains nécessitent plusieurs milliers voir dizaines de milliers d’euros annuellement pour leur utilisation.

Comment?

Puisque EPIC a choisi WordPress, qui n’est pas nativement headless, il a fallu adapter la solution à nos besoins.

Ce que nous n’avons PAS fait

WordPress offre une API Rest qui, théoriquement, expose le contenu automatiquement. Le problème avec cette API c’est qu’elle ne “connaît” pas les champs ACF que nous utilisons pour structurer le contenu (probablement un sujet pour un autre article), réduisant sévèrement son utilité.

MVC

Nous avons donc développé notre propre MVC (Model-View-Controller) sur WordPress. Les contrôleurs exposent les données en JSON via des “décorateurs”, pattern de développement qui “enrobent” un objet pour augmenter ses capacités sans le modifier directement. Dans notre cas, ce pattern permet de mixer les posts natifs WordPress avec les champs ACF et transformer le tout en JSON consommable par le frontend.

L’objectif pour EPIC est de fournir une expérience utilisateur et développeur de qualité en gardant toujours en tête les performances et la sécurité du site. Pour ce faire, il était très important pour nous de ne jamais modifier le cœur de WordPress mais d’exploiter au maximum les fonctionnalités natives, garantissant ainsi de pouvoir mettre à jour aussi fréquemment que possible et d’installer les plugins utiles compatibles sans adaptation.

Des problèmes ?

Évidemment, tout cela n’est pas “gratuit”. WordPress n’étant pas conçu à la base pour un fonctionnement headless, certaines difficultés ont dû être surmontées.

Performance

C’est moins lié au headless qu’à l’utilisation extensive de champs ACF mais une attention toute particulière a dû être portée à la façon dont les contenus sont construits pour éviter une génération exponentielle de queries. Une fois que tous les tricks de performances sont implémentés, notre plugin de cache permet d’atteindre des performances moyennes de nos sites sous les 50ms.

Compatibilité

WordPress n’étant pas un CMS nativement headless, la plupart des plugins qui offrent des fonctionnalités “frontend” ne fonctionnent pas tels quels. Un travail de recherche est donc critique pour déterminer l’utilisabilité de ceux-ci. Les plugins “admin”, par contre, sont habituellement beaucoup plus faciles à intégrer. EPIC a dans sa boîte à outils une série de plugins indispensables tels que Polylang Pro, ACF Pro, iThemes Security, … qui facilitent notre travail au quotidien.

Finalement

WordPress est un CMS mature avec une très large communauté et reste, malgré son “âge”, moderne et performant. Si EPIC continue à veiller en permanence pour trouver la solution “next generation”, rien ne permet pour l’instant de remplacer ce CMS efficacement.

Ce site utilise des cookies
Nous utilisons des cookies et des technologies similaires pour ajuster vos préférences, analyser le trafic et mesurer l’efficacité de nos campagnes. Si vous souhaitez en savoir plus sur comment et pourquoi nous utilisons des cookies et comment les bloquer, veuillez lire notre politique de confidentialité
  • Publicité Essentials

    En utilisant ces cookies, nous sommes en mesure de vous montrer des publicités sur des sites web de tiers qui peuvent être pertinentes pour vous. Nous pouvons également mesurer leur efficacité.

    Facebook pixel

  • Essentiels

    Ces cookies sont essentiels au fonctionnement du site et ne peuvent être désactivés dans nos systèmes. Ils sont généralement installés en réponse à des actions que vous entreprenez et qui constituent une demande de services, telles que le réglage de vos préférences en matière de confidentialité, la connexion ou le remplissage de formulaires. Vous pouvez configurer votre navigateur de manière à bloquer ces cookies ou à en être informé, mais certaines parties du site web peuvent en être affectées. Ces cookies ne stockent aucune information d'identification personnelle.

    pll_language

    Le serveur enregistre la langue choisie par l'utilisateur pour afficher la bonne version des pages.

    epic-cookie-prefs

    Cookie qui mémorise les préférences de paramètres des cookies de l'utilisateur. Il permet d'éviter de demander à l'utilisateur ses préférences à chaque visite sur le site web.

    _dc_gtm_(property-id)

    Cookie défini par Google Tag Manager. Google Tag Manager permet de gérer les balises du site web sans modifier le code. Toutes les balises gérées via Google Tag Manager sont conditionnées à l'acceptation de la catégorie de cookie pertinente.

  • Performance

    Ces cookies nous permettent de savoir combien de personnes visitent nos sites web et à partir de quelles sources elles arrivent sur nos sites web. Ils nous aident à comprendre quelles (parties) de nos sites web sont populaires et comment les visiteurs naviguent sur nos sites web. Cela nous permet d'analyser nos sites web et de les optimiser afin que vous puissiez trouver plus facilement tout ce que vous voulez. Toutes les informations recueillies par ces cookies sont agrégées et donc anonymes.

    _ga

    Ce cookie Google Analytics est créé lors de votre première visite sur notre site. Il contient la version de Google Analytics, un identifiant généré de manière aléatoire et un groupe de date et heure de votre première visite. Google Analytics est un service d'analyse web proposé par Google qui suit et rapporte anonymement le trafic sur les sites web.

    _gid

    Ce nom de cookie est associé à Google Universal Analytics. Il semble stocker et mettre à jour une valeur unique pour chaque page visitée. Google Analytics est un service d'analyse web proposé par Google qui suit et rapporte anonymement le trafic sur les sites web.

    _ga_(container-id)

    Ce cookie Google Analytics est utilisé pour maintenir l'état de la session. Google Analytics est un service d'analyse web proposé par Google qui suit et rapporte anonymement le trafic sur les sites web.

    _pk_id

    Cookie défini par Matomo pour stocker de manière anonyme certains détails sur l'utilisateur, tels que l'identifiant unique du visiteur. Matomo est une application d'analyse web qui suit les visites en ligne sur un ou plusieurs sites web et génère des rapports sur ces visites pour l'analyse. Toutes les données suivies avec Matomo sont anonymes.

    _pk_ses

    Cookie mis en place par Matomo pour stocker temporairement les données de la visite. Matomo est une application d'analyse web qui permet de suivre les visites en ligne sur un ou plusieurs sites web et d'afficher des rapports sur ces visites à des fins d'analyse. Toutes les données suivies par Matomo sont anonymes.

Ce site utilise des cookies

Nous utilisons des cookies et des technologies similaires pour ajuster vos préférences, analyser le trafic et mesurer l’efficacité de nos campagnes. Si vous souhaitez en savoir plus sur comment et pourquoi nous utilisons des cookies et comment les bloquer, veuillez lire notre politique de confidentialité