Arts numériques 1
Accueil du site / Modules / CMS : Wordpress / Plus : personnaliser la boucle wordpress

Query_posts est une fonction qui permet de déterminer ce que wordpress doit aller chercher dans les contenus du site. Par défaut, c’est wordpress qui s’occupe de savoir ce qu’il doit afficher en fonction du contexte : les derniers posts dans la page d’entrée ou telle page ou article. query_posts permet d’imposer à Wordpress votre requête personnelle.

La syntaxe est simple : commençons par un exemple simple : afficher les contenus de la catégorie 1. On placera ce code devant la fameuse boucle Wordpress :

<?php query_posts('cat=1'); ?>

<?php while (have_posts()) : the_post(); ?>
 <!-- Ici on affiche ses contenus -->
<?php endwhile; ?>

Pour afficher un article particulier :

<?php query_posts('p=1'); ?>

et pour une page

<?php query_posts('page_id=6'); ?>

Voir l’article sur les query sur le site Wordpress

Afficher le contenu "normal" après une query personnalisée

A partir du moment ou on impose sa propre query (demande) à Wordpress, il perd la mémoire et ne se rappellera plus ce qu’il devait initialement afficher dans la page. Si j’utilise ma query au début de la page d’entrée du site, qui devait afficher les 5 derniers articles, j’aurais la surprise de voir que wordpress n’affiche plus ces contenus mais uniquement le contenu de ma query personnelle. Il a oublié ce qu’était le contexte de la page.
Pour parer à ça, on peut stocker la demande initiale, et lui rappeller une fois l’affichage personnel terminé.

Comme ça :

// on recopie la requete par defaut
<?php $temp_query = $wp_query; ?>
// on fait sa demande personnalisée
<?php query_posts('category=10&posts_per_page=6'); ?>
// on affiche tout ça
<?php while (have_posts()) : the_post(); ?>
 <!-- Ici on affiche ses contenus -->
<?php endwhile; ?>

// on remet en place la requete initiale
<?php $wp_query = $temp_query; ?>

Répondre à cet article