WP Greet Box icon
Bonjour à toi visiteur du Web ! Si tu aimes WordPress, abonnes-toi au flux RSS pour être tenu informé des mises à jour.

Résoudre les problèmes de pagination avec la fonction Query Posts

La fonction query_posts() est utile pour contrôler quels articles doivent être affichés dans la boucle de WordPress. Malgré les nombreux paramètres disponibles, un problème récurent concerne la pagination qui ne fonctionne pas… les articles se répétant d’une page sur l’autre.

Problème constaté

Si on utilise la fonction query_posts() pour, par exemple, lister l’ensemble des articles de votre blog sur une page d’archives, un problème gênant survient. Les articles listés sur la première page sont les mêmes sur la seconde page et ainsi de suite : la pagination ne fonctionne plus !

Solution fonctionnelle

Le codex de WordPress n’est pas très clair à ce sujet. Or, il faut ajouter un paramètre supplémentaire dans votre requête pour obtenir une pagination de nouveau opérationnelle.

Ainsi, les lignes de code suivantes permettent de lister 50 articles par pages via l’argument posts_per_page.

<?php if (have_posts()) : ?>
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;  query_posts("posts_per_page=50&paged=$paged"); ?>
<?php while (have_posts()) : the_post(); ?>

<ul>
<li><a href="<?php the_permalink() ?>" rel="bookmark"  title="<?php the_title(); ?>"><?php the_title();  ?></a></li>
</ul>

<?php endwhile; ?>

Ce bout de code peut être utilisé pour lister vos articles sur une page de catégorie à raison de 50 par page dans cet exemple.

Notez que le lignes comprises entre <?php while (have_posts()) : the_post(); ?> et <?php endwhile; ?> contiennent la boucle. En termes simples, il s’agit de déterminer la façon dont seront affichés les éléments de la requête.

Dans cet exemple, j’utilise une liste à puces pour afficher chaque titre d’articles conformément à ma requête consistant à lister 50 articles par pages.

Une autre solution m’a été proposée par Francis Chouquet sur son blog Fran6art. Elle fait le lien avec le plugin WP-pagenavi. Les 2 approches sont normalement fonctionnelles avec le plugin de pagination… mais 2 méthodes valent toujours mieux qu’une !

La fonction query_posts() est décidément très puissante et il n’est pas aisée de la manipuler. Grâce à ce bout de code, vous ne devriez plus rencontrer de problèmes avec la pagination.

Crédits photo : amortize

Tags :

7 réponses to “Résoudre les problèmes de pagination avec la fonction Query Posts”

  1. Bonjour,
    Merci pour ce tutoriel qui m’a été bien utile pour créer la page d’archives de mon photoblog.
    Par contre, pour que cela fonctionne j’ai du enlever cette ligne : <?php if (have_posts()) : ?>
    sinon j’avais une erreur PHP.

  2. email envoyé mais pas reçu ? Pour info c’est la première ligne du code que j’ai supprimé pour que cela fonctionne.
    Encore merci :-)

  3. Bizarrement, ta méthode et celle de Francis ne marche pas pour moi. Si vous êtes dans le même cas, je vous invite à utiliser les query strings comme expliqué ici : http://www.wordpress-fr.net/support/sujet-17260-aide-query-post

  4. Salut aurélien,

    mais de rien ;)

Trackbacks/Pingbacks

  1. [...] sur le blog de Fran6art concernant l’utilisation de wp-page navi ou dernièrement par WordPress Channel, mais malheureusement pour moi sans succès. Et puis, enfin, j’ai trouvé une [...]

Laisser un commentaire

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Logo WordPress Channel
Logo Neticpro