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.
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 !
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
[...] 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 [...]
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.
Malheureusement, le bout de code n’est pas passé dans ton commentaire. Pourrez-tu me l’envoyer par e-mail pour que je puisse le publier ?
Merci !
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
C’est bon je viens d’éditer le commentaire.
Je n’avais pu que tu m’avais envoyé un e-mail… faut que j’améliore mon système de messagerie !
A bientôt !
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
Merci du lien ! Ça devrait aider d’autres personnes.
Salut aurélien,
mais de rien