Also Like

Comment travailler avec GraphQL dans WordPress en 2024

 

De quelles options disposons-nous pour intégrer GraphQL à WordPress en 2024 ? Leonardo Losoviz décrit les développements qui ont eu lieu dans cet espace au cours des trois dernières années.

Il y a trois ans, j'ai publié « Making GraphQL Work In WordPress », dans lequel j'ai comparé les deux principaux serveurs GraphQL disponibles pour WordPress à l'époque : WPGraphQL et Gato GraphQL . Dans cet article, j'avais pour objectif de définir les scénarios les mieux adaptés à chacun.

Divulgation complète : j'ai créé Gato GraphQL, initialement connu sous le nom d' API GraphQL pour WordPress , comme mentionné dans l'article.

De nombreux nouveaux développements ont eu lieu dans ce domaine depuis la publication de mon article, et c'est le bon moment pour réfléchir à ce qui a changé et à son impact sur la façon dont nous travaillons aujourd'hui avec les données GraphQL dans WordPress.

Cette fois, cependant, concentrons-nous moins sur le moment de choisir l'un des deux serveurs disponibles et plus sur les développements qui ont eu lieu et comment les plugins et WordPress sans tête, en général, ont été affectés.

Headless est l’avenir de WordPress (et le sera toujours) #

Il n’y a pas d’autre solution : Headless est l’avenir de WordPress ! Du moins, c'est ce que nous lisons dans les articles et les tutoriels depuis environ huit ans. Étant Argentin, cela me rappelle une vieille blague qui dit : « Le Brésil est le pays du futur et le sera toujours ! » L’avenir est à la fois imminent et lointain.

La vérité est que les sites WordPress qui utilisent réellement des fonctionnalités sans tête – via GraphQL ou l’API WP REST – ne représentent qu’une petite partie du marché global de WordPress. WPEngine propose peut-être les recherches les plus approfondies sur l'utilisation sans tête dans son rapport « The State of Headless ». Pourtant, il a déjà quelques années et se concentre davantage à la fois sur le mouvement général sans tête (pas seulement WordPress) et sur le contexte des organisations d'entreprise. Mais l’avenir de WordPress, selon le rapport, s’écrit dans les nuages ​​:

« Le Headless est clairement présent, et avec l'augmentation rapide de l'adoption par les entreprises entre 2019 (53 %) et 2021 (64 %), il est susceptible de devenir la norme du secteur pour les organisations à grande échelle axées sur la création et le maintien d'une empreinte numérique puissante et connectée. . […] Parce qu'il s'agit déjà du CMS le plus populaire au monde, utilisé par bon nombre des plus grands sites du monde, et parce qu'il est hautement compatible en tant que CMS sans tête, apportant flexibilité, extensibilité et des tonnes de fonctionnalités que les créateurs de contenu adorent, WordPress est un ajustement naturel pour les configurations sans tête.

Il y a à peine un an, un utilisateur de Reddit a interrogé de manière informelle des personnes sur r/WordPress , et bien que ce soit loin d'être scientifique, les résultats sont à peu près aussi fiables que la conjecture qui l'a précédé :

106 l’utilisent, 410 ne le font pas et 361 ne savent pas comment le faire.
Résultats du sondage informel Reddit. ( Grand aperçu )

Le headless pourrait très bien être l’avenir de WordPress, mais la preuve n’a pas encore fait son chemin dans les piles de développeurs quotidiennes. Il se pourrait très bien que l'intérêt général et la curiosité déterminent l'avenir plus que les travaux tangibles, comme le suggère un autre article de WPEngine de la même année que le rapport sur mesure en identifiant « Headless WordPress » comme terme de recherche populaire . Cela pourrait tout aussi bien être bien plus de fumée que de feu.

C'est pourquoi je pense que le « headless » n'est pas encore une véritable alternative à une pile WordPress traditionnelle qui s'appuie sur l'architecture frontale WordPress. Je le vois davantage comme une autre approche, ou une autre saveur, de la création de sites Web en général et de niche en plus .

Tout cela était vrai il y a à peine trois ans et l’est encore aujourd’hui.

WPEngine « possède » WordPress sans tête #

Ce n'est pas une coïncidence si nous faisons référence à WPEngine lorsque nous parlons de WordPress sans tête, car la société d'hébergement parie fortement sur le fait qu'il deviendra l' approche de facto du développement WordPress.

Prenez, par exemple, le lancement par WPEngine de Faust.js , un framework sans tête avec WPGraphQL comme base. Faust.js est un framework avisé qui permet aux développeurs d'utiliser WordPress comme système de gestion de contenu back-end et Next.js pour restituer le côté front-end des choses. Entre autres fonctionnalités, Faust.js reproduit le système de modèles WordPress pour Next.js , ce qui rend la configuration permettant de rendre les articles et les pages à partir de données WordPress beaucoup plus facile dès le départ.

WPEngine est bien adapté à cette tâche, car il peut proposer un hébergement pour Node.js et WordPress en tant que solution unique via sa Atlas plateforme . WPEngine a également acheté le populaire plugin Advanced Custom Fields (ACF) qui permet de définir les relations entre les entités dans le modèle de données WordPress. Ajoutez à cela le fait que WPEngine a repris le serveur Headless WordPress Discord, avec des discussions centrées sur WPGraphQL, Faust, Atlas et ACF. Il pourrait très bien s’appeler le serveur WordPress sans tête alimenté par WPEngine.

Mais l’agenda et la domination de WPEngine dans l’espace ne sont pas la question ; c'est plutôt qu'ils ont beaucoup de peau dans le jeu en ce qui concerne l'anticipation d'un avenir WordPress sans tête. Encore plus aujourd’hui qu’il y a trois ans.

API GraphQL pour WordPress → Gato GraphQL #

J'ai créé il y a plusieurs années un plugin appelé GraphQL API pour WordPress pour aider à prendre en charge le développement WordPress sans tête. Il convertit les données extraites de l'API REST WordPress en données GraphQL structurées pour des requêtes plus efficaces et flexibles basées sur le contenu géré et stocké dans WordPress.

Plus récemment, j'ai publié une version considérablement mise à jour du plugin, tellement mise à jour que j'ai choisi de la renommer Gato GraphQL , et elle est désormais disponible gratuitement dans le répertoire des plugins WordPress . Il s'agit d'une offre freemium comme de nombreux modèles de tarification de plugins WordPress. La version gratuite et open source du répertoire des plugins fournit le serveur GraphQL, mappe le modèle de données WordPress dans le schéma GraphQL et fournit plusieurs fonctionnalités utiles, notamment des points de terminaison personnalisés et des requêtes persistantes. Le module complémentaire commercial payant étend le plugin en prenant en charge plusieurs exécutions de requêtes, l'automatisation et un client HTTP pour interagir avec des services externes, entre autres fonctionnalités avancées.

Je sais que cela ressemble beaucoup à un argumentaire de produit, mais restez avec moi car la décision que j'ai prise de réorganiser mon plugin GraphQL existant et d'introduire une multitude de services premium en tant que fonctionnalités a un sens. Cela correspond à ma conviction que

WordPress est de plus en plus ouvert à donner aux développeurs WordPress et aux propriétaires de sites beaucoup plus de marge d'innovation pour travailler en collaboration et gérer le contenu de manière nouvelle et passionnante, à la fois dans et hors de WordPress.

Frameworks JavaScript et WordPress sans tête #

Gatsby était peut-être le framework JavaScript le plus populaire et le plus leader pour la création de sites WordPress sans tête au moment où mon premier article a été publié en 2021. Ces jours-ci, cependant, Gatsby est en fort déclin et son intégration avec WordPress n'est plus maintenue .

Next.js était également un leader à l’époque et est toujours très populaire aujourd’hui. Le framework comprend plusieurs modèles de démarrage conçus spécifiquement pour les instances WordPress sans tête.

SvelteKit et Nuxt sont en plein essor ces jours-ci et sont considérés comme de bons choix pour établir un WordPress sans tête, comme cela a été discuté lors du WordCamp Asia 2024 .

Aujourd'hui, en 2024, nous continuons de voir de nouveaux entrants dans le framework JavaScript, notamment Astro . Malgré les récents problèmes de Gatsby, le paysage de l'utilisation des frameworks JavaScript pour créer des expériences frontales à partir du back-end WordPress est en grande partie le même qu'il y a quelques années, même s'il est peut-être un peu plus facile, grâce à la disponibilité de nouveaux modèles qui sont intégré dès la sortie de la boîte.

GraphQL transcende WordPress sans tête #

La plus grande différence entre les plugins WPGraphQL et Gato GraphQL est que, là où WPGraphQL est conçu pour convertir les données de l'API REST en données GraphQL dans une seule direction , Gato GraphQL utilise les données GraphQL dans les deux sens d'une manière qui peut être utilisée pour gérer les données non-headless. Les sites WordPress également. Je dis cela non pas pour vous inciter à utiliser mon plugin, mais pour vous aider à décrire comment GraphQL a évolué au point où il est utile dans plus de cas que les sites WordPress sans tête.

Gérer un site WordPress via GraphQL est possible car GraphQL est un outil agnostique pour interagir avec les données , quelle que soit cette interaction. GraphQL peut récupérer des données sur le serveur, les modifier, les stocker sur le serveur et appeler des services externes. Ces interactions peuvent toutes être codées au sein d’une seule requête.

GraphQL peut ensuite être utilisé pour rechercher des expressions régulières et remplacer une chaîne dans tous les messages , ce qui est pratique lors des migrations de sites. On peut également importer une publication depuis un autre site WordPress ou même depuis un flux RSS ou une source CSV.

Et grâce aux hooks WordPress et à WP-Cron , l'exécution d'une requête GraphQL peut être une tâche automatisée. Par exemple, chaque fois que le publish_post le hook est déclenché — c'est-à-dire qu'une nouvelle publication sur le site est publiée — nous pouvons exécuter certaines actions, comme une notification par e-mail à l'administrateur du site , ou générer une image sélectionnée avec l'IA si la publication en manque.

En bref, GraphQL fonctionne dans les deux sens et ouvre de nouvelles possibilités pour de meilleures expériences de développeur et d'auteur !

GraphQL devient une fonctionnalité « principale » dans WordPress 6.5 #

J'ai déclaré publiquement que GraphQL ne devrait pas être un élément essentiel de WordPress . Il y a beaucoup de raisonnements derrière mon opinion, mais en résumé, l'API WP REST est parfaitement capable de satisfaire nos besoins en matière de transmission de données, et l'ajout de GraphQL au mélange pourrait constituer un risque de sécurité dans certaines conditions.

Mes inquiétudes mises à part, GraphQL est officiellement devenu un citoyen de premier ordre de WordPress lorsqu'il a été intégré à WordPress 6.5 avec l'introduction de Plugin Dependencies , une fonctionnalité qui permet aux plugins d'identifier d'autres plugins comme dépendances. Nous voyons cela sous la forme d'un nouveau commentaire « Nécessite des plugins » dans l'en-tête d'un plugin :

/**
 * Plugin Name: My Ecommerce Payments for Gato GraphQL
 * Requires Plugins: gatographql
 */

WordPress voit quels plugins sont nécessaires pour que le plugin actuel fonctionne correctement et installe le tout ensemble en même temps, en supposant que les dépendances sont facilement disponibles dans le répertoire des plugins WordPress.

Alors, vérifiez ça. Puisque WPGraphQL et Gato GraphQL sont dans le répertoire du plugin, nous pouvons désormais créer un autre plugin qui utilise GraphQL en interne et le distribue via le répertoire du plugin ou, en général, sans avoir à indiquer comment l'installer. Par exemple, nous pouvons désormais utiliser GraphQL pour récupérer des données afin de restituer les blocs du plugin .

En d’autres termes, les plugins sont désormais capables d’établir des relations plus symbiotiques qui ouvrent encore plus de possibilités ! Au-delà de cela, chaque plugin du répertoire des plugins WordPress fait désormais techniquement partie de WordPress Core, y compris WPGraphQL et Gato GraphQL. Donc oui, GraphQL est désormais techniquement une fonctionnalité « essentielle » qui peut être exploitée par d'autres développeurs.

Aider WordPress à dominer le marché des CMS, encore une fois #

Lors de la présentation principale du WordCamp Asia 2024, de Human Made, le co-fondateur Noel Tock, a discuté de l'avenir de WordPress . Il soutient que la croissance de WordPress a stagné ces dernières années , grâce à une pléthore de services Web modernes capables d'interagir et aboutissant à des systèmes de gestion de contenu composables adaptés à certains développeurs d'une manière que WordPress ne l'est tout simplement pas.

Graphique linéaire historique montrant le déclin des WordPress monolithiques et les CMS composables qui progressent en innovation au fil du temps.
Diapositive tirée du discours d'ouverture du WordCamp Asia 2024 de Noel Tock. ( Grand aperçu )

Tock continue d'expliquer comment WordPress peut redevenir un moteur de croissance en nettoyant l'écosystème des plugins WordPress et en fournissant des intégrations de premier ordre avec des services externes.

Graphique linéaire historique montrant le déclin des WordPress monolithiques et les CMS composables qui progressent en innovation au fil du temps.
Diapositive tirée du discours d'ouverture du WordCamp Asia 2024 de Noel Tock. ( Grand aperçu )

Voyez-vous où je veux en venir avec ça ? GraphQL pourrait jouer un rôle déterminant dans le succès futur de WordPress. Cela pourrait très bien être le lien entre WordPress et tous les différents services avec lesquels il interagit , positionnant WordPress au centre du Web. La récente fonctionnalité Plugin Dependencies que nous avons mentionnée plus tôt est un aperçu de ce à quoi WordPress pourrait ressembler en adoptant des approches plus composables de gestion de contenu qui soutiennent sa position de leader du marché.

Conclusion #

WordPress « sans tête » est toujours « l’avenir » de WordPress. Mais comme nous l’avons discuté, il y a très peu de progrès réels vers cet avenir dans la mesure où les développeurs y adhèrent malgré un profond intérêt pour les architectures sans tête, WordPress jouant uniquement le rôle de back-end.

Il existe de nouveaux frameworks solides qui s'appuient sur GraphQL pour interroger des données, et ceux-ci ne disparaîtront pas de sitôt. Et ces frameworks sont ceux qui s'appuient sur des plugins WordPress existants qui consomment les données de l'API WordPress REST et les convertissent en données GraphQL structurées.

Pendant ce temps, WordPress progresse vers une plus grande innovation, car les développeurs de plugins sont désormais en mesure d’exploiter d’autres plugins comme dépendances pour leurs plugins. Chaque plugin répertorié dans le répertoire des plugins WordPress est essentiellement une fonctionnalité de WordPress Core, notamment WPGraphQL et Gato GraphQL. Cela signifie que GraphQL est facilement disponible pour tout développeur de plugins à partir de WordPress 6.5.

GraphQL peut être utilisé non seulement pour le headless mais aussi pour gérer le site WordPress. Chaque fois que des données doivent être transformées, que ce soit localement ou en invoquant un service externe, GraphQL peut être l'outil pour le faire. Cela signifie même que les transformations de données peuvent être déclenchées automatiquement pour ouvrir de nouvelles façons intéressantes de gérer le contenu , à la fois à l'intérieur et à l'extérieur de WordPress. Cela fonctionne dans les deux sens !

Alors oui, même si le headless est l’avenir de WordPress (et le sera toujours), GraphQL pourrait en effet être un élément clé pour faire de WordPress à nouveau une force innovante qui façonne l’avenir du CMS.

Commentaires