Intégration CMS : connecter WordPress et lier les données¶
Dans cette section, nous allons configurer WordPress comme source de données, le connecter à Silex et lier les articles de blog à votre page d'accueil.
Si vous n'avez pas WordPress ou ne souhaitez pas utiliser de CMS, vous pouvez passer cette page. Votre site fonctionne parfaitement bien sans — codez simplement votre contenu en dur au lieu de le récupérer depuis WordPress.
Configurer WordPress (si vous ne l'avez pas encore)¶
Vous aurez besoin d'un site WordPress fonctionnant avec deux extensions :
Pods — Vous permet de créer des types de contenu personnalisés et des champs personnalisés au-delà de la structure par défaut Articles/Pages. Pods est 100% gratuit et open source.
WPGraphQL et WPGraphQL for Pods — Expose votre contenu WordPress via GraphQL (un langage de requête que Silex utilise pour récupérer les données).
Installer les extensions¶
- Dans l'administration WordPress, allez dans Extensions → Ajouter
- Recherchez « Pods » et installez-le
- Recherchez « WPGraphQL » et installez-le
- Recherchez « WPGraphQL for Pods » et installez-le
- Activez les trois extensions
Créer un type de contenu personnalisé pour les projets (optionnel)¶
Si vous souhaitez mettre en avant des projets en plus des articles de blog, créez un type de contenu personnalisé avec Pods :
- Dans WordPress, allez dans Pods Admin → Add New
- Sélectionnez Custom Post Type
- Nom : « Project », Singulier : « Project », Pluriel : « Projects »
- Cliquez sur Save Pod
Vous disposez maintenant d'un menu « Projects » dans WordPress où vous pouvez ajouter des éléments de portfolio.
Configurer les champs personnalisés pour les articles de blog¶
- Dans WordPress, allez dans Pods Admin → Edit Pods
- Sélectionnez le pod Post (ou votre type de contenu personnalisé)
- Cliquez sur Add Field et créez des champs pour le contenu du blog :
- « Featured Image » (type : File / Image)
- « Excerpt » (type : Paragraph, 200 caractères)
-
« Author Name » (type : Plain Text)
-
Assurez-vous que Show in GraphQL est activé pour chaque champ
- Cliquez sur Save Pod
Lorsque vous créez des articles de blog, vous pouvez maintenant remplir ces champs personnalisés.
Obtenir votre endpoint WordPress GraphQL¶
Votre site WordPress expose les données via un endpoint GraphQL. C'est l'URL que Silex utilisera pour récupérer le contenu.
Trouver votre endpoint GraphQL :
Si votre WordPress est à https://monwordpress.com, l'endpoint GraphQL est généralement :
https://monwordpress.com/graphql
Testez-le en visitant cette URL dans votre navigateur. Vous devriez voir une interface GraphQL (ou une réponse JSON si vous la visualisez dans le navigateur).
Connecter WordPress dans Silex¶
Maintenant, indiquons à Silex où trouver vos données WordPress.
Dans Silex, allez dans les Paramètres du site :
- Cliquez sur Settings (barre latérale gauche, généralement une icône d'engrenage)
- Trouvez la section Data Source ou CMS
- Cliquez sur Connect Data Source
- Choisissez WordPress (ou GraphQL si vous utilisez une autre API GraphQL)
- Collez l'URL de votre endpoint :
https://monwordpress.com/graphql - Cliquez sur Save
Silex se connecte maintenant à WordPress. Vous devriez voir une coche verte indiquant que la connexion est réussie.
Créer une liaison de données pour les articles de blog¶
Nous allons maintenant ajouter les articles de blog à la page d'accueil. Créons une section qui affiche les trois derniers articles.
Sur la page index :
- Trouvez un emplacement sous votre section hero pour ajouter une zone d'articles de blog
- Ajoutez un Div avec la classe
agency-blog - Ajoutez un Heading 2 (h2) avec le texte « Derniers articles » ou similaire
- En dessous, ajoutez un Div avec la classe
agency-blog-grid— celui-ci contiendra les cartes
Configurer la grille :
- Sélectionnez le Div
agency-blog-grid - Définissez Display : Flex
- Définissez Flex-wrap : wrap
- Définissez Column-gap et Row-gap (par ex.
24px) - Cela affichera les articles de blog côte à côte
Ajouter un composant carte d'article de blog¶
À l'intérieur du agency-blog-grid, créez une carte qui se répétera pour chaque article de blog :
- Ajoutez un Div avec la classe
agency-blog-card - À l'intérieur, ajoutez :
- Image — affichera l'image mise en avant
- Heading 3 (h3) — affichera le titre de l'article
- Paragraph — affichera l'extrait
- Link — renverra vers l'article
Styliser la carte :
Appliquez les mêmes styles de carte que précédemment :
- Border, Border-radius, Padding, Box-shadow
- Flex-basis d'environ
300pxavec Flex-grow1 - Définissez Width de l'image à
100%et Height à200pxavec Object-fit : cover
Créer une expression pour les articles de blog¶
Une expression indique à Silex où récupérer les données et comment les formater.
Sur le Div agency-blog-card :
- Cliquez sur le panneau Data (barre latérale droite)
- Cherchez « States » ou « Data Binding »
- Créez un nouvel état appelé
post - Définissez le type sur loop — cela indique à Silex que la carte se répétera pour chaque élément
Configurer la boucle :
La boucle a besoin de savoir sur quelles données itérer. Créez une expression :
- Cliquez sur Edit Expression (ou un bouton similaire dans le panneau Data)
-
Votre expression doit pointer vers les articles de blog. Dans WordPress via GraphQL, cela peut être :
(ouposts.nodesselon votre configuration WordPress) -
Cela indique à Silex d'itérer sur chaque article dans la collection
posts
Pour des conseils détaillés sur les expressions, voir Expressions et Liaison de données.
Lier les champs individuels¶
Maintenant que la carte se répète pour chaque article, liez chaque champ aux données de l'article :
Image de l'article :
- Sélectionnez l'élément Image dans la carte
- Dans le panneau Data, créez un état appelé
featured_imageouimage - Définissez l'expression sur :
post.featuredImage.sourceUrl(ou similaire, selon votre configuration WordPress) - Cela récupère l'URL de l'image mise en avant de chaque article
Titre de l'article :
- Sélectionnez le Heading 3
- Créez un état pour le titre
- Définissez l'expression sur :
post.title - Dans le contenu HTML, liez l'état pour afficher le titre
Extrait de l'article :
- Sélectionnez le Paragraph
- Créez un état pour l'extrait
- Définissez l'expression sur :
post.excerpt - Optionnellement, utilisez un filtre pour limiter la longueur (par ex.
post.excerpt | slice: 0, 150)
Lien de l'article :
- Sélectionnez le Link
- Définissez l'attribut
hrefsur l'URL de l'article :post.linkoupost.uri
Utiliser les filtres pour formater les données¶
Silex inclut des filtres Liquid pour transformer les données. Les plus courants :
post.excerpt | strip_html— supprimer les balises HTMLpost.date | date: "%Y-%m-%d"— formater la datepost.excerpt | slice: 0, 150— afficher uniquement les 150 premiers caractèrespost.title | upcase— convertir en majuscules
Voir Filtres pour la liste complète.
Limiter le nombre d'articles affichés¶
Par défaut, une boucle affiche tous les articles. Pour n'en afficher que trois :
Lorsque vous créez l'expression de la boucle, modifiez-la pour limiter les résultats :
Cela affiche uniquement les trois premiers articles.
Tester votre intégration CMS¶
Avant de publier, testez la liaison de données :
- Dans Silex, assurez-vous d'être sur la page
index - Vous devriez voir les articles de blog rendus dans l'éditeur avec le contenu réel de WordPress
- Vérifiez que les titres, images et extraits apparaissent correctement
- Vérifiez que la mise en page des cartes est correcte avec les données
Si rien n'apparaît :
- Vérifiez que votre connexion WordPress fonctionne (allez dans les Paramètres du site et vérifiez l'endpoint)
- Assurez-vous d'avoir au moins un article de blog publié dans WordPress
- Vérifiez la console du navigateur (F12 → Console) pour les messages d'erreur
- Vérifiez que votre requête GraphQL est correcte (vous pouvez la tester directement à
votrewodpress.com/graphql)
Prochaines étapes¶
Votre page d'accueil récupère maintenant dynamiquement les articles de blog depuis WordPress. Les visiteurs voient vos derniers articles sans que vous ayez à mettre à jour manuellement la page.
Rendez-vous sur Publication pour mettre votre site en ligne sur GitLab Pages.
Pages connexes¶
- Comment fonctionne le CMS — aperçu de la liaison de données et des expressions
- Expressions — tokens, filtres et chaînage
- Liaison de données — guide de l'interface pour créer des états
- Boucles et listes — répéter des composants pour les collections
- Filtres — transformer les données avec les filtres Liquid
- Configuration WordPress — configuration détaillée de WordPress et Pods