Modifier wp : la loop (boucle d’or)
Comme nous l’avons vu dans le billet précédent, le contenu principal est issu des fichiers index.php, archives/category.php, page.php ou single.php. Dans chacun de ces fichiers vous trouverez une boucle qui va, selon conditions, afficher les billets souhaités. Je précise que dans le wp3.0, les developpeurs ont sorti la loop dans un fichier dédié. C’est une très bonne idée mais en l’occurence la boucle est un peu compliquée pour commencer.
Regardons à quoi elle ressemble (dans le template par défaut des wp 2.X) et comment, en la modifiant, on peut sélectionner les résultats pour choisir très finement ce qui apparait sur une page :
<?php while (have_posts()) : the_post(); ?>
<div <?php post_class() ?> id= »post-<?php the_ID(); ?> »>
<h2><a href= »<?php the_permalink() ?> » rel= »bookmark » title= »Lien permanent vers <?php the_title_attribute(); ?> »><?php the_title(); ?></a></h2>
<small><?php the_time(’j F Y’) ?> par <?php the_author() ?></small>
<div class= »entry »>
<?php the_content(’Lire le reste de cet article »’); ?>
</div> <p class= »postmetadata »><?php the_tags(’Mots-clefs : ‘, ‘, ‘, ‘<br />’); ?> Publié dans <?php the_category(’, ‘) ?> | <?php edit_post_link(’Modifier’, », ‘ | ‘); ?> <?php comments_popup_link(’Aucun commentaire »’, ‘1 commentaire »’, ‘% commentaires »’, ‘comments-link’, ‘Les commentaires sont fermés’); ?></p>
</div>
<?php endwhile; ?>
Traduit cela donne (évitez de vous faire piéger par ce qui parait compliqué, il faut détacher son esprit de la totalité pour ne regarder que ce qui vous intéresse) :
<?php while (have_posts()) : the_post(); ?> : le début de loop dit : Tant que tu as des billets, regardons les l’un après l’autre (et cela s’arrêter avec <?php endwhile; ?> quand tous les billets y seront passés).
Vous n’y toucherez presque jamais, mais c’est bien là que ça commence. Ensuite on affiche les billets les uns après les autres (la forme la plus classique d’une page d’accueil de blog, non ?) : tout le reste ce sont des propriétés d’affichage. Modifier un template va consister la plupart du temps à trouver le bon tag (sous la forme <?php the_permalink() ?> par exemple qui va renvoyer le lien permanent.) pour afficher la bonne information.
On retiendra en premier lieu :
- <?php the_permalink() ?> renvoie le lien propre au billet affiché (en fait c’est juste un numéro identifiant collé à une URI du genre : http://www.monsite.net/?p=lenumeroidentifiant)
- <?php the_title(); ?> allez celui-ci je ne l’explique pas, comme ça on voit bien que ce n’est pas si difficile et que ce n’est pas réservé aux informaticiens-barbus-et-aux-moeurs-etranges (oui ok faut comprendre l’anglais…).
- <?php the_author() ?> affiche l’auteur de manière cliquable (avec lien vers tous ses articles propres)
- <?php the_content(’Lire le reste de cet article »’); ?> affiche le contenu du billet avec un lien « lire le reste de l’article ». the_content(); tout court affichera tout le contenu du billet, the_excerpt() le résumé (ou les x premiers caractères)
Je vous laisse essayer de trouver les autres informations affichées.
Le truc qui va rendre la loop interessante, comme souvent, ce sont les contraintes au début. Je m’explique : ici la loop dit à la base de données balance moi tous les billets. Mais si on arrive à lui dire, de prime abord : donne moi seulement ceux de la catégorie « oulala » et « oops », voire ne me donne que le billet numéro 54, et bien on décide tout simplement de tout et là on dépasse le moteur de blog.
Par quel miracle, je suppose qu’à ce moment du billet ceux qui ont tenu jusque là se le demande, va-t-on lui imposer nos desirs ? Par une prière efficace que wordpress appelle : the_query, la requête. En gros il suffit d’être poli et de savoir le demander gentiment (avec une bonne syntaxe quoi). On la place avant boucle d’or de cette manière :
<?php query_posts(marequete); ?>
Avec un peu de vocabulaire cela donne :
<?php query_posts(’cat=X’)?> ou x est le numéro de la catégorie recherché (petit truc pour trouver l’id : il conclue l’url de la page qui affiche tous les éléments d’une catégorie, on fait pleins de trucs en lisant les adresses).
Je ne reprends que le contenu entre parenthèse
- (’p=X’) n’ira chercher qu’un seul article
- (’cat=X&showposts=3′) n’ira chercher que les trois derniers articles de la catégorie X. Le & (l’esperluette) permet de multiplier les contraintes.
La ressource ultime pour continuer est le codex : un wiki maintenu par les utilisateurs wordpress et regroupant la doc.
Sur cette page vous trouverez les explications sur la loop : http://codex.wordpress.org/fr:La_Boucle ;
Sur celle-ci des exemples d’utilisation du query_posts (en anglais) : http://codex.wordpress.org/Template_Tags/query_posts
Le mieux reste de regarder un fichier en dur, de tester et de voir ce que cela donne ! Ce qui est bien avec wordpress, c’est que la plupart du temps vous n’aurez pas à toucher au php mais juste à trouver les bons tags (ou marqueurs de modèle) pour la bonne info. Les marqueurs de modèles sont regroupés ici : http://codex.wordpress.org/fr:Marqueurs_de_Modele
Je pourrai revenir sur la présentation des billets un de ces quatre et voir comment on peut présenter les billets. Expliquer du coup comment marche la mise en forme des données avec css. Mais la prochaine fois, plus simple : comment fait-on pour appliquer des modèles globaux aux pages et, donc, comment en dédier une à l’agrégation de plusieurs contenus du même site.




“Modifier wp : la loop (boucle d’or)”