Ce tutoriel WordPress est entièrement gratuit.
Merci de désactiver votre bloqueur de pub ! =)

Les includes

Des bouts de code inclus dans les templates pour en optimiser leur maintenance.

Pour l’instant, nous avons vu des templates qui sont des pages complètes. Un header, une liste de billets, un footer.
Mais certaines parties du code étant généralement les mêmes à travers les fichiers, il est préférable de regrouper ces parties en des fichiers séparés que l’on va inclure aux pages complètes.

Les includes principalement utilisés sont :

header.php : là où tout commence

Le fichier header.php est celui, avec footer.php, que l’on place dans tous les templates. L’un ouvre le code HTML, l’autre le ferme. Entre les deux, c’est le template qui gère.

On va créer ce fichier étape par étape parce qu’on va le garder jusqu’à la fin.
Il sera le 1er d’un ensemble de fichiers qui constituera un thème complet que l’on va créer au fur et à mesure de ce tutoriel.

Partons d’un bout de HTML5 :

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>bbxpress : un blog de Guru</title>
    <link rel="stylesheet" href="style.css" type="text/css">
  </head>
  <body>
    <div class="wrap">
      <header>
        <h1><a>bbxpress</a></h1>
        <h2>Un blog de Guru</h2>
      </header>

Le code est volontairement réduit à son strict nécessaire. On va établir des bases simples et solides pour ensuite construire un site plus riche.

Première chose à noter : j’ouvre la div « wrap » mais ne la ferme pas. En effet, on va la fermer plus tard dans footer.php pour que le site entier soit inclus dans cette div.

Deuxième chose à noter : il n’y a pas de PHP dans ce code… pour l’instant. On y va petit à petit. J’ai mis uniquement du code HTML en prenant néanmoins soin de placer du contenu statique (le titre, la description).
On pourrait laisser le code ainsi, ça ne poserait pas de problème… mais ce ne serait pas pratique à modifier. Il faudrait ouvrir directement le fichier PHP pour l’éditer en ligne ou bien l’uploader par FTP.

On va donc remplacer ce contenu statique par du contenu dynamique :

<!DOCTYPE html>
<html>
  <head <?php language_attributes(); ?>>
    <meta charset="<?php bloginfo('charset'); ?>">
    <title><?php the_title(); ?></title>
    <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css">
    <?php wp_head(); ?>
  </head>
  <body>
    <div class="wrap">
      <header>
        <h1><a><?php bloginfo('name'); ?></a></h1>
        <h2><?php bloginfo('description'); ?></h2>
      </header>

Revoilà la fonction bloginfo() que l’on avait déjà vue.
J’ai aussi rajouté the_title(), une fonction très pratique de WordPress. Selon la page où l’on se trouve, elle génèrera un titre adéquat.
La fonction wp_head() est quasiment indispensable. En fait, elle permet aux plugins d’insérer du code dans le <head>. Vous pouvez vous en passer mais je ne vous le conseille pas.

Sauvegardons ce header dynamique et passons à la suite.

footer.php : là où tout prend fin

Toute balise ouverte doit être refermée à un moment ou à un autre…

      <footer>
        <?php bloginfo('name'); ?> est propulsé par <a href="http://wordpress.org">WordPress</a>.
      </footer>
    </div>
    <?php wp_footer(); ?>
  </body>
</html>

Un simple footer qui reprend le nom du blog et fait un peu de pub pour WordPress.

Ici, la fonction wp_footer() joue le même rôle que wp_head(), à savoir définir un lieu où un plugin peut insérer du code, notamment des appels JavaScript pour le footer.

sidebar.php : une colonne bien pratique

On va définir une colonne latérale que l’on pourra appeler dans tous les templates. Elle aura du contenu général, non spécifique à une page précisément.

La sidebar a un rôle particulier dans WordPress : elle permet d’insérer des Widgets.
Il s’agit de petits modules (un bloc de texte, une liste de catégories, un formulaire de recherche, un calendrier) que l’on peut insérer, ordonner et administrer dans le backend de WordPress.
Leur avantage : ils sont très simples à utiliser. Un novice peut s’en occuper.
Leur désavantage : ils ne sont pas vraiment customizables.
Pour nous, créateurs de thème, on peut s’en passer parce qu’on sait mettre du code directement dans le fichier sidebar.php.
Mais si votre thème est destiné à des novices, il faut rendre votre thème « widget-ready« , c’est-à-dire le rendre capable d’accepter des Widgets.
On verra ça dans une leçon prochaine.

Restons simples pour cette sidebar :

<div class="side">
  <!-- Bouton RSS -->
  <a href="<?php bloginfo('rss2_url'); ?>">S'abonner au flux RSS</a>
  <!-- Formulaire de recherche -->
  <?php get_search_form(); ?>
  <!-- Archives -->
  <ul class="list">
    <?php wp_get_archives('type=monthly'); ?>
  </ul>
</div>

Un lien vers le flux RSS, le formulaire de recherche (qui est lui-même un include), ainsi qu’une simple liste des archives par mois.

searchform.php : un formulaire avec des règles

Le formulaire de recherche est parfois utilisé à plusieurs endroits dans une page. C’est pourquoi WordPress le place par défaut dans un fichier à part : searchform.php. Ce n’est pas du tout obligatoire et j’avoue ne pas le faire systématiquement.

Par contre, le code du formulaire, lui, doit répondre aux règles suivantes :

Voici un formulaire de recherche simplifié mais qui fonctionne :

<form method="get" id="form" action="<?php bloginfo('url'); ?>/">
  <input type="text" value="<?php the_search_query(); ?>" name="s" id="s">
  <input type="submit" id="submit">
</form>

En validant le formulaire, la page affichée sera du type blog.fr/?s=requete et le template utilisé sera search.php.

comments.php : l’usine à gaz des commentaires

Le fichier comments.php ne peut être inclus uniquement dans single.php, et plus précisément dans la boucle de single.php (boucle que nous verrons dans la leçon suivante).

Il a 2 rôles :

Il faut savoir que depuis WordPress 3, le fichier comments.php n’est plus indispensable. En effet, il suffit d’appeler la fonction comments_template() dans le fichier single.php pour afficher ce qu’il faut (les commentaires et le formulaire) parce qu’il s’agit d’une fonction intégrée à WordPress.

Mais il se peut que vous vouliez modifier le code des commentaires, et dans ce cas, il faut créer un fichier comments.php et le modifier. Ce fichier est le plus dur à modifier dans un thème WordPress. C’est pourquoi, si je dois le modifier, je pars toujours du fichier présent dans le thème par défaut (Twenty Ten par exemple), le duplique, et le modifie à partir de là. C’est le seul auquel j’applique ce processus.

La première difficulté réside dans les possibilités d’affichage des commentaires :

Avec toutes ces conditions, il est facile de se perdre dans les méandres de comments.php

Une deuxième difficulté, c’est la customisation du code. En effet, depuis WordPress 3, l’affichage des commentaires se fait en appelant uniquement la fonction wp_list_comments(). Du coup, le code HTML généré n’est pas modifiable… enfin, pas facilement. Je l’ai déjà fait, et je ne le conseille pas. Pareil pour le formulaire de nouveau commentaire, qui se réduit à la fonction comment_form().

Après avoir parcouru tous ces includes, attaquons-nous au plus important d’entre eux : loop.php.