Six personnes différentes touchent aux mêmes gabarits de blocs dans cette agence, avec des profils mêlant intégration front et développement PHP. Cette réalité d’équipe pèse plus lourd que n’importe quelle préférence technique personnelle dans le choix entre un rendu de bloc via Timber et ses templates Twig, ou un render_callback PHP classique qui mélange logique et balisage dans un seul fichier.
Le rendu avec un render_callback PHP classique
La méthode la plus directe consiste à retourner du HTML construit en PHP, avec la logique et le balisage entremêlés dans la même fonction :
function agence_rendre_bloc_temoignage( $attributs ) {
$temoignages = get_field( 'liste_temoignages', $attributs['id_page'] );
$sortie = '<div class="bloc-temoignages">';
foreach ( $temoignages as $temoignage ) {
$sortie .= sprintf(
'<blockquote><p>%s</p><cite>%s</cite></blockquote>',
esc_html( $temoignage['texte'] ),
esc_html( $temoignage['auteur'] )
);
}
return $sortie . '</div>';
}
Le même rendu avec Timber et un gabarit Twig
Avec Timber, la fonction PHP se limite à préparer les données, tandis que le gabarit Twig porte seule la structure du balisage :
function agence_rendre_bloc_temoignage( $attributs ) {
$contexte = Timber::context();
$contexte['temoignages'] = get_field( 'liste_temoignages', $attributs['id_page'] );
Timber::render( 'blocs/temoignages.twig', $contexte );
}
{# blocs/temoignages.twig #}
<div class="bloc-temoignages">
{% for temoignage in temoignages %}
<blockquote>
<p>{{ temoignage.texte }}</p>
<cite>{{ temoignage.auteur }}</cite>
</blockquote>
{% endfor %}
</div>

Ce que Twig apporte concrètement à six intégrateurs
La séparation nette entre logique et balisage permet à une personne principalement front de modifier la structure HTML d’un bloc sans toucher au code PHP qui prépare les données, et inversement. Sur un projet où plusieurs profils différents interviennent au fil des sprints, cette séparation réduit le risque qu’une modification de mise en forme introduise accidentellement une erreur PHP, ou qu’une modification de logique casse un balisage soigneusement mis en forme.
Comparatif
| Critère | render_callback PHP classique | Timber + Twig |
|---|---|---|
| Séparation logique / présentation | Faible, tout dans un fichier | Nette, deux fichiers distincts |
| Dépendance ajoutée au projet | Aucune | Bibliothèque Timber à installer et maintenir |
| Courbe d’apprentissage pour un profil front | Nécessite de lire du PHP | Syntaxe Twig proche du HTML |
| Rapidité de mise en place pour un bloc isolé | Immédiate | Légèrement plus lente, gabarit à créer |
| Performance brute | Légèrement supérieure | Surcoût de compilation Twig, mis en cache |
Le coût caché : une dépendance de plus à maintenir
Ajouter Timber au projet signifie aussi surveiller ses mises à jour, s’assurer de sa compatibilité avec les versions de PHP utilisées, et former les nouveaux arrivants à sa syntaxe Twig si ce n’est pas déjà un outil qu’ils connaissent. Pour un projet ponctuel avec un seul bloc à produire, ce coût d’entrée dépasse largement le bénéfice de séparation obtenu.
Le verdict pour ce type de projet d’agence
Sur un projet impliquant plusieurs intégrateurs qui interviennent durablement sur les mêmes gabarits, la séparation apportée par Timber et Twig justifie le coût d’une dépendance supplémentaire : elle réduit les conflits de responsabilité entre profils front et back, et facilite la relecture du code par une personne qui ne maîtrise pas nécessairement le PHP en profondeur. Pour un bloc isolé, ponctuel, ou maintenu par une seule personne polyvalente, un render_callback classique reste la solution la plus rapide à mettre en œuvre, sans dépendance ni gabarit supplémentaire à gérer.
Le meilleur moteur de gabarit n’est jamais une question de goût personnel : c’est une question de qui d’autre va devoir relire et modifier ce code dans six mois.
Notre verdict
Timber et ses templates Twig apportent une réelle clarté sur des projets d’agence à plusieurs intervenants, en échange d’une dépendance et d’une courbe d’apprentissage à assumer collectivement. Un render_callback PHP classique reste préférable pour un bloc isolé ou une équipe restreinte, sans que l’un des deux choix soit universellement supérieur à l’autre. La comparaison avec Sage ou Blade, qui répondent à d’autres besoins de gabarit, reste traitée séparément.