vendredi 25 septembre 2026

À propos

Contact

Thèmes

Sage 10 en pratique : développer un thème WordPress avec Blade, Acorn et Bud

Installation de Sage 10, composants Blade, service providers Acorn et build Bud, avec les pièges de déploiement rencontrés sur un vrai projet.

Par Clément Hadrot • 9 juin 2022 • 5 min de lecture • Aucun commentaire
Sage 10 en pratique : développer un thème WordPress avec Blade, Acorn et Bud

Le studio de photographie Lumen souhaitait un thème sur mesure avec une architecture de code proche de ce que l’équipe pratiquait déjà sur ses projets Laravel côté applicatif. Sage 10, sorti l’année précédente, correspondait exactement à ce besoin : il introduit Acorn, un pont entre WordPress et le conteneur de services de Laravel, et remplace l’ancien build Webpack par Bud, plus simple à configurer. Ce tutoriel couvre l’installation complète et les deux ou trois pièges de déploiement rencontrés en production.

Ce texte ne compare pas Sage aux autres starter themes du marché ; il se concentre sur sa mise en pratique concrète, pour qui a déjà choisi cette voie.

Installation et structure du projet

Sage 10 s’installe via Composer, à la différence des versions précédentes qui reposaient sur un simple générateur Yeoman :

composer create-project roots/sage studio-lumen
cd studio-lumen
npm install
npm run build

La structure qui en résulte diffère sensiblement d’un thème classique : les vues vivent dans resources/views/, les contrôleurs optionnels dans app/, et le point d’entrée du thème reste functions.php, mais réduit à sa portion congrue puisque l’essentiel de la logique passe désormais par Acorn.

Acorn : le conteneur de services Laravel appliqué à WordPress

L'essentiel à retenir : Acorn apporte le conteneur de services Laravel à WordPress ; Blade remplace entièrement le PHP natif dans les vues ; Bud gère le build sans configuration Webpack manuelle

Acorn adapte plusieurs briques de Laravel — le conteneur d’injection de dépendances, les service providers, le système de configuration — au contexte de WordPress. Un service provider dédié aux menus du thème, par exemple, s’enregistre comme dans une application Laravel classique :

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ThemeServiceProvider extends ServiceProvider {
	public function boot() {
		register_nav_menus( array(
			'primary' => __( 'Menu principal', 'sage' ),
			'footer'  => __( 'Menu du pied de page', 'sage' ),
		) );

		add_theme_support( 'post-thumbnails' );
		add_theme_support( 'title-tag' );
	}
}

Ce provider est ensuite déclaré dans config/app.php, aux côtés des autres fournisseurs de services du thème. L’intérêt principal de cette organisation : chaque aspect du thème (menus, images, blocs personnalisés) vit dans son propre provider, plutôt que dans un unique functions.php qui grossit indéfiniment.

Blade : des vues sans balises PHP à rallonge

Les templates s’écrivent en Blade, avec héritage de gabarits natif, ce qui réduit fortement la duplication par rapport à des get_header() et get_footer() répétés dans chaque fichier :

{{-- resources/views/single.blade.php --}}
@extends('layouts.app')

@section('content')
	@while(have_posts()) @php(the_post())
		<article>
			<h1>{{ get_the_title() }}</h1>
			{!! get_the_content() !!}
		</article>
	@endwhile
@endsection

La directive {!! !!}, à la différence de {{ }}, n’échappe pas automatiquement le HTML — indispensable pour get_the_content(), qui contient déjà du balisage, mais à réserver strictement à des sorties dont on maîtrise l’origine, jamais à une saisie utilisateur non filtrée.

Bud : un build sans configuration Webpack manuelle

Sage 10 remplace l’ancien système de build basé sur Webpack directement configuré par Bud, une surcouche qui expose une API plus simple pour les besoins courants d’un thème : compilation Sass, bundling JavaScript, gestion des assets. Le fichier bud.config.js reste volontairement court pour un projet standard :

export default async (bud) => {
	bud
		.entry('app', ['scripts/app.js', 'styles/app.scss'])
		.entry('editor', ['styles/editor.scss']);
};

Les pièges de déploiement rencontrés

  • Chemin des assets compilés : Acorn s’attend à trouver un manifeste des fichiers compilés dans public/build/. Oublier de déployer ce dossier, souvent exclu par erreur d’un .gitignore copié depuis un projet Laravel classique, casse le chargement des styles sans message d’erreur explicite.
  • Cache de configuration : Acorn met en cache la configuration du thème en production, comme le ferait Laravel. Une modification de config/app.php non suivie d’un vidage de ce cache reste invisible tant qu’on ne le sait pas.
  • Version de PHP côté hébergement : Acorn et ses dépendances Laravel exigent une version de PHP plus récente que celle parfois encore active par défaut chez certains hébergeurs mutualisés, ce qui a nécessité une vérification préalable avant le premier déploiement.

Un thème Sage bien construit se maintient plus vite qu’un thème classique équivalent, à condition que toute l’équipe partage déjà une base solide en Laravel ; sans cette base, chaque ligne de code devient un obstacle à expliquer.

En résumé

Sage 10, Acorn et Bud forment un ensemble cohérent pour une équipe déjà à l’aise avec l’écosystème Laravel, avec un vrai gain de structure sur les projets de taille moyenne à grande. Les trois pièges de déploiement identifiés ici — assets compilés absents, cache de configuration, version de PHP insuffisante — couvrent la quasi-totalité des incidents rencontrés lors des premières mises en production du studio avec cette stack.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi