Fonctionnement du blog : pourquoi Laravel et WordPress

J’explique dans cet article pourquoi j’ai choisi Laravel et WordPress comme stack de départ pour le fonctionnement de ce blog.

Fonctionnement du blog : pourquoi Laravel et WordPress

J’ai décidé en début d’année 2023 de monter un blog pour partager mes connaissances dans les domaines du Web que je pratique au quotidien : développement et webdesign.

Je veux un blog mais comment le créer ? Je vous explique mes choix dans la suite.

Avant de plonger dans le code je dois définir quelle sera la stack technique utilisée pour le projet.

Définition de la stack de départ

Je n’ai pas envie de créer un CMS from-scratch car ce serait trop long et je n’aime pas particulièrement réinventer la roue.

Qui dit blog dit Wordpress. On ne va pas se mentir, malgré la “mauvaise pub” autour de ce CMS, il reste un incontournable pour tous les projets de création d’un blog ou d’un site internet. Il dispose d’une base solide de contributeurs, un catalogue de plugins fournis (avec du bon et du moins bon) et il peut s’adapter à quasiment tous les cas de figure.

Mon choix va donc se porter sur Wordpress mais uniquement pour la partie backend !

En effet il est possible de découpler le backend du frontend sur Wordpress.

Comment ?

Couper la tête de WordPress : extensions

Je ne souhaite pas utiliser le frontend de WordPress sur mon blog, je dois donc limiter son accès aux visiteurs pour éviter les problèmes. Pour y parvenir j’utilise deux extensions :

Headless Mode

Cette extension permet de rediriger tous les visiteurs qui souhaitent accéder à l’URL de votre installation WordPress. Les seuls requêtes autorisées sont celles de l’API REST, l’API GraphQL ou n’importe quel utilisateur connecté qui veut accéder à l’administration.

https://fr.wordpress.org/plugins/headless-mode/

Disable REST API

Pour la plupart des versions de WordPress cette extension va retourner une erreur d’authentification si l’utilisateur n’est pas autorisé à accéder au endpoint.

Information importante : ce plugin n’a pas été mis à jour depuis la version 4.4 de WordPress cependant elle est fonctionnelle sur la version 6 que j’utilise actuellement. Je mettrais à jour cette partie au besoin.

https://wordpress.org/plugins/disable-json-api/

Avec cette configuration je vais pouvoir profiter de la puissance de Wordpress pour la gestion de mes articles en backend.

TALL stack pour le frontend : présentation

Pour la partie frontend j’ai décidé de partir, pour le coup from-scratch, avec mon framework préféré : Laravel. Plus précisément la TALL stack (pour Tailwindcss AlpineJs Livewire Laravel). Un article dédié à la TALL stack est en préparation.

Je l’utilise depuis bientôt 3 ans et c’est un véritable plaisir. Rien ne lui résiste !

Pourquoi Laravel et WordPress

Pour être totalement transparent, c’est la solution que j’ai mise en place en 2022 lors de la refonte du site de mon agence J2L Concept. Il était précédemment propulsé, depuis sa création en 2020, par le CMS Grav (en flat file). Ce CMS ne convenant plus à notre évolution, il fallait une refonte et ce choix du couple Laravel / WordPress est venu assez naturellement. 

Il nous fallait un backoffice pour gérer nos articles de blog, nos réalisations et nos contenus sans perdre en réactivité en front. Pour y parvenir j’ai mis en place un système de cache sur les vues Blade côté Laravel qui se met à jour à chaque modification sur le backoffice Wordpress.

Je vous explique en très gros comment ça fonctionne sur ce schéma :

Cette prouesse est rendue possible par l’utilisation de Corcel.

Corcel : accéder à la base de données WordPress avec Laravel

Le paquet Corcel est une collection de classes PHP construite au-dessus de l’ORM Eloquent de Laravel et qui donne accès à une interface simple pour se connecter et accéder à la base de données de WordPress.

Vous pouvez donc utiliser WordPress comme CMS pour ajouter des articles ou des Customs Post Types et accéder à ces données grâce à un système de Model.

Après configuration je peux par exemple récupérer tous mes articles publiés en utilisant ce code :

// Je récupère tous les articles publiés
$posts = Post::published()->get();

Ou encore un article en particulier avec :

// Je récupère l’article avec l’ID 31
$post = Post::find(31);

Et ensuite afficher son titre dans une vue Blade avec :

// J’affiche le titre de l’article dans ma vue Blade
$post->post_title;

Plutôt sympa non 😎

Conclusion

Pour conclure je vais donc retenir comme stack de départ pour mon blog :

  • Wordpress : pour la partie backend
  • Laravel avec la TALL stack : pour la partie frontend

Contenus associés

Forcer la redirection HTTP vers HTTPS sur Laravel 8, 9 et plus

Votre hébergeur ne propose pas le HTTPS par défaut, vous ne pouvez pas modifier le htaccess… Comment faire ? J’ai LA réponse à vos questions.

Forcer la redirection HTTP vers HTTPS sur Laravel 8, 9 et plus
Laravel Eloquent : insertGetId - insérer et récupérer l'ID d'un enregistrement en une ligne

Laravel offre la possibilité d'insérer un enregistrement et de récupérer son ID en une ligne. Cet article vous explique comment faire.

Laravel Eloquent : insertGetId - insérer et récupérer l'ID d'un enregistrement en une ligne
Laravel Artisan : make - le guide complet

Le framework Laravel dispose d'un ensemble complet de commandes, la plus utilisée étant certainement make. Connaissez-vous toutes les commandes disponibles ?

Laravel Artisan : make - le guide complet
Hébergez vos polices Google sans effort avec Laravel

Pensez à héberger vos polices Google sur votre serveur : vous gagnerez en vitesse de chargement et vous serez en règle avec le RGPD. Je vous donne ma méthode dans cet article.

Hébergez vos polices Google sans effort avec Laravel
Laravel : créer facilement un sitemap

Je vous présente un paquet qui vous permet de générer très facilement un sitemap pour votre site sous Laravel.

Laravel : créer facilement un sitemap
Laravel Livewire : l'importance de sécuriser l'ID de son model

Livewire est un framework pour Laravel qui permet de créer des interfaces dynamiques depuis le backend. Attention tout de même à la sécurité.

Laravel Livewire : l'importance de sécuriser l'ID de son model