var Phenix = function () {
Troll du Web depuis 1996

Construire une site #Wordpress avec Timber et #Twig

Twig est un système de templating PHP. Il permet de créer des squelettes de page qui seront ensuite transformés en page HTML.

Timber permet d’utiliser Twig avec Wordpress.

Je n’ai jamais apprécié, la façon dont sont créés le thème Wordpress, utiliser PHP comme système de templating est une idée très moyenne par rapport à la lisibilité qu’apport un système de template. Ne seraissent que parce que PHP encourage les développeurs de thème à faire « à leur sauce ».
Un système de template a tendance forcer une méthodologie et donc faciliter le travail entre plusieurs développeurs.
Il ne faudra pas rentrer dans la tête du développeur initial pour modifier le thème. Ou apprendre un des nombreux frameworks de templating Wordpress.

Il y a d’autre défaut au système de base de Wordpress, mais ce n’est pas l’objet de cet article.

Installer Timber et mettre en place les bases :

Copier le dossier wp-content/plugins/timber-library/timber-starter-theme dans le dossier thème de Wordpress.

Renommer le dossier pour qu’il colle avec votre thème et éditer style.css pour adapter les valeurs, cela correspond à notre nouveau thème.

Tout le sale boulot de ce système est fait, la majorité des fichiers templates Wordpress sont déjà remplit avec les codes twig qui vont bien :

On trouve par exemple ce code dans single.php :

  1. $context = Timber::get_context();
  2. $post = Timber::query_post();
  3. $context['post'] = $post;
  4. $context['comment_form'] = TimberHelper::get_comment_form();
  5.  
  6. if ( post_password_required( $post->ID ) ) {
  7. Timber::render( 'single-password.twig', $context );
  8. } else {
  9. Timber::render( array( 'single-' . $post->ID . '.twig', 'single-' . $post->post_type . '.twig', 'single.twig' ), $context );
  10. }

Il appelle par défaut le fichier single.twig, sauf s’il trouve un fichier spécifique single-ID_or_type.twig.

A partir de là, on travaillera principalement avec le sous-dossier templates qui contient les fichiers .twig.

Template :

Le template principal se nomme base.twig et contient le squelette principal du site. Ce squelette sera alors étendu par les autres squelettes. Par exemple dans page.twig :

  1. {% extends "base.twig" %}
  2.  
  3. {% block content %}
  4. <div class="content-wrapper">
  5. <article class="post-type-{{post.post_type}}" id="post-{{post.ID}}">
  6. <section class="article-content">
  7. <h1 class="article-h1">{{post.title}}</h1>
  8. <div class="article-body">
  9. {{post.content}}
  10. </div>
  11. </section>
  12. </article>
  13. </div><!-- /content-wrapper -->
  14. {% endblock %}

On étend base.twig en surchargeant le block content.

La documentation de timber et au besoin, documentation de Twig, contiennent tout ce qu’il faut savoir.
Plus vraiment d’excuse donc pour développer sans moteur de template !

Un message, un commentaire ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message
  • Pour créer des paragraphes, laissez simplement des lignes vides.