Les thèmes enfants

Au-delà de la bonne pratique

Pré-requis

Parce que sinon c’est trop facile

Cet atelier suppose que vous savez :

Vous avez des doutes ? Filez lire « Comment choisir un thème WordPress optimisé ? » par Daniel Roch.

L’héritage ascendant

Faites travailler vos enfants !

La principale caractéristique des thèmes enfants est… leur thème parent ! Il est votre patrimoine technique, mais c’est pourtant lui qui hérite de ses enfants ! Ah bon ? Moi je dis qu’il bluffe !

Contre-pillez

En mode pirate

Cette fonction sur le projet Machin est demandée par tous nos projets récents : on peut donc l’ajouter au thème parent. Comment feriez-vous ça, vous ? Lachez-vous, on a bien dix minutes pour discuter !

Méthodologie

Éliminez les déchets

  1. Homogénéisez et règlementez l’écriture du code ;
  2. Organisez vos fichiers en chapitres ;
  3. Commentez, documentez, citez et créditez ;
  4. Autorisez l’émancipation des enfants.
Un exemple ?

Dans ffeeeedd


/* == @section Gestion des commentaires ==================== */
/**
 * @author Luc Poupard
 * @see https://twitter.com/klohFR
 * @note Personnalise l’affichage des commentaires, ajout des microdonnées,
 * @note et amélioration de l’accessibilité du formulaire avec les attributs et rôles ARIA.
*/

/* -- @subsection Ajout de l’attribut HTML5 required sur le textarea -------------------- */
add_filter( 'comment_form_defaults', 'ffeeeedd__textarea__html5' );
if ( ! function_exists( 'ffeeeedd__textarea__html5' ) ) {
  function ffeeeedd__textarea__html5( $defaults ) {
    $defaults['comment_field'] = '
    <p class="comment-form-comment">
      <label for="comment">' . __( 'Comment', 'ffeeeedd' ) . '
        <span class="required">*</span>
      </label>
      <textarea id="comment" name="comment" cols="45" aria-required="true" required="required"></textarea>
    </p>';
    return $defaults;
  }
}
            

On a un camp de base,

Allons à l’aventure !

Grâce à votre thème parent, vos projets ne seront plus des champs de bataille mais des terra incognita qu’il vous faudra découvrir. Allez, et voguez sur vos thèmes enfants.

Devenez explorateur

Sortez de votre PHP !

Votre thème parent vous permet de moins vous répéter. Chaque thème enfant est désormais une occasion d’explorer et acquérir de nouvelles connaissances. Chouette, non ?

Montez en compétence

On aborde l’accessibilité ?

Imaginez une fonction de fil d’Ariane incluse dans votre thème parent. Dans le cadre d’un projet, vous profitez de votre thème enfant pour en améliorer l’accessibilité.
Super ! Mais comment fait-on ? Une idée ?

Worklow optimal

Vers l’infini et l’au-delà

  1. Dupliquez ladite fonction dans votre thème enfant ;
  2. Recherchez les améliorations possibles ;
  3. Déterminez celles à appliquer, et comment le faire ;
  4. Testez et vérifiez le résultat ;
  5. Si vous êtes satisfait, envisagez de ré-intégrer vos améliorations à votre thème parent.

Documentation :

Après de longues recherches


/* == @section Fil d’Ariane ==================== */
  /**
   * @author Daniel Roch
   * @see https://twitter.com/rochdaniel
   * @see http://www.seomix.fr/fil-dariane-chemin-navigation/
   * @note Modifications pour améliorer l’accessibilité
   ** @author Gaël Poupard
   ** @see https://twitter.com/ffoodd_fr
   ** @see https://gist.github.com/jonathantneal/4037764
   ** @see http://www.w3.org/WAI/tutorials/menus/multiple-ways/#breadcrumbs
  */
          
« Merci ! » — Signé : un successeur qui vous veut du bien.

Et ça donne quoi ?

Le code généré


<nav role="navigation" aria-label="Vous êtes ici :">
  <a href="http://2014.wptech.fr">WordPressTech 2014</a>
  <span aria-hidden="true"> → </span>
  <strong>Les thèmes enfants : au-delà de la bonne pratique</strong>
</nav>
            
Et voilà : on suit désormais la recommandation du WAI et on a une ressource nous indiquant ce qui est vocalisé par certains lecteurs d’écran. Trop cool !

On a déjà vu comment intégrer ça au thème parent.

Un recyclage productif

« Cultivez votre jardin »

Grâce à votre thème, vous pourrez travailler en autarcie :

  • Moins de dépendances ;
  • Meilleure documentation ;
  • Maintenance facilitée ;
  • Vos travaux ne sont plus cloisonnés à un projet.

Je n’ai pas fini !

On sort l’artillerie lourde

  1. Quid des extensions ?
  2. Et des extensions obligatoires (MU plugins) ?
  3. Et — soyons fous — des composants HTML ?

Faites-en autant : contre-pillez, explorez, recyclez, et améliorez encore et encore votre travail.

Les interventions

Avec plein de bonnes choses dedans

  • Composer a été évoqué pour gérer les dépendances ;
  • Tony Archambeau a mentionné plusieurs pratiques :
    • Définir des constantes propres au projet ;
    • La scission de functions.php en deux : une pour l’admin, une pour le front (cf. dans ffeeeedd) ;
    • La capacité à tester l’existence de classes et méthodes en complément du test sur les fonctions.
  • L’utilisation d’outils « de workflow » tels que Grunt.

Merci

Et à bientôt ☺

Crédits