Francis Chouquet Graphiste Lettering

Utiliser le plugin WP-pagenavi avec le « query_posts »

0

Ca fait plusieurs fois que des lecteurs me font part d’un problème lié à l’utilisation des « query_posts » de WordPress et du plugin de pagination WP_pagenavi. En effet, lorsque les deux sont utilisés sur la même page, lorsque l’on clique sur le 2 de la navigation, l’URL se transforme bien en la page 2, mais les articles sont toujours les mêmes, ceux de la page 1…

Le souci provient donc de l’utilisation des « query_posts » de WordPress qu’il convient de remplacer par un code quelque peu différent mais qui fera fonctionner le plugin comme il faut ! 😉 Ce code a été « rédigé » par l’auteur du plugin, Lesterchan. Admettons que je veuille afficher 4 articles mais que je souhaite cacher ceux de la catégorie 9. Normalement, avec les « query_posts ». je vais afficher ceci:

1 2 3 
<?php query_posts("showposts=4&cat=-9"); ?>

Mais dans ce cas-là, la pagination, comme nous l’avons montré plus haut, ne fonctionnera pas. Pour que tout soit parfait, il faudra utiliser le code suivant:

1 2 3 4 5 6 
<?php $paged = intval(get_query_var('paged')); if($paged == 0) { $paged = 1; } query_posts("showposts=4&cat=-9&paged=$paged"); ?>

Vous remarquerez que la « query_posts » est toujours présente et vous permettra d’attribuer les mêmes paramètres que l’utilisation que vous en faisiez auparavant. Ici, j’ai pris comme exemple la page d’accueil de Blogalwarming qui affiche certains articles avec ce système de pagination.

C’est vraiment tout bête comme « tip » mais je vous conseille de le bookmarker parce qu’il est fort possible que vous en ayez un jour besoin et que vous ne vous vous souveniez plus d’où vous aviez entendu parler de ce hack !! 😀

38 Commentaires

  • Combien de fois ai-je pu râler contre ce problème ! Merci pour cette info (en fait, je n’ai mm pas songé à vérifier si Lesterchan en parlait sur son site).

  • Précision: l’utilisation excessive de la fonction query_posts() est nocif pour les performances de votre blog 😉

  • Oui, j’ai lu ça. Est-ce qu’il y a des modes d’emploi pour limiter leurs utilisation ou plutôt pour optimiser leur utilisation à partir d’un thème donné ?

  • Amaury pourrais-tu donner plus de précision concernant la lourdeur de cette requète ?
    Comment n’afficher en homepage que 3 articles de certaines catégories sans utiliser cette fonction ?

    ps: je suis en train de lire votre livre les mecs et je tire mon chapeau…….allez je continue ma lecture ( pourquoi ne pas avoir présenté Joomla dans les CMS ?) dsl pour le hs

  • PiErO > Les requêtes comme celles-ci sont très utiles et imparables quand on veut afficher certains articles de certaines catégories. Seulement, il ne faut pas trop en abuser parce que ça peut ralentir considérablement un blog. Cependant, dans pas mal de cas, elles sont très utiles pour tous ceux comme nous qui ne développons pas et elles ont d’ailleurs été faites dans ce but là.

    Maintenant, si ce n’est que pour afficher un certain nombre d’articles, pas la peine d’une requête, Amaury a d’ailleurs écrit un très bon article sur le sujet la semaine dernière…

    http://www.herewithme.fr/fixer.....-wordpress

  • Francis > concernant l’article d’Aumaury, il explique comment déterminer un nombre d’articles précis en fonction de sa navigation or ce dont je souhaite c’est certes limiter à 4 le nombre de mes articles sur mon « homepage » mais surtout filtrer les catégories !

    à moins que j’ai raté une étape…..

  • hello Francis,

    Enfin tes conseils sont de retour !!
    Merci pour ce tips, il va m’être très utile.

  • PiErO > Et bé pour ça tu peux utiliser les queries. Ce que j’ai dit c’est seulement qu’il y a des cas pour lesquels tu peux et à la limite tu dois faire autrement… Mais pour trier sur les catégories, une petite wp_query ou query_posts est très bien, mais faut les utiliser avec parcimonie. Je suis moi-même le premier à en abuser !! 😀

  • Bonjour Francis
    Je m’appelle Simon Denis, je suis un Québécois qui débute dans le fabuleux Monde des thèmes WP. J’ai suivi ton tutoriel et j’ai trouvé ça fantastique! j’avais déjà customisé des thèmes existants, mais je marchais à tâtons… Grâce à toi, je connais mieux le fonctionnement de WP et j’ai bien l’intention de me perfectionner encore davantage… Merci beaucoup!

    J’avais une question pour toi…comment fait-on pour masquer la feuille de style dans l’admin de WP une fois que le thème est uploadé sur ton serveur? C’est que moi, j’ai le screenshot de mon thème et juste en dessous y a tout le css qui apparaît ???
    Je ne comprends pas…

    Merci beaucoup

    — simon

  • Simon > En modifiant le thème, tu as du touché au fichier CSS et oublié de refermé le commentaire comprenant le nom du theme, la version, auteur …..
    A titre d’exemple, voila à quoi ca ressemble:

    /*
    Theme Name: Zoxengen
    Theme Date: 16042008
    Theme URI: http://www.dezzain.com/
    Description: Unique customize technology software wordPress theme with featured gallery and featured videos.
    Author: Richie K
    Author URI: http://www.dezzain.com/
    Tags: red, custom theme option, fixed width, three columns, widgets, featured videos, featured smooth articles
    */

    sachant que le */ referme le commentaire qui est extrait et affiché dans l’admin des thèmes de wordpress

    J’espère avoir été assez clair.

  • Simon Denis > Tu as probablement dû oublier de fermer la déclaration de la feuille de style !! 😉
    PS: Merci d’utiliser l’article adéquat pour poser une question, ici, c’est un peu hors sujet !! 😉

  • Merci pour cet astuce, ceci peut être bien pour afficher un post qui a du succès et de le mettre en avant, je vais me pencher dessus 😉

  • Merci pour les réponses claires…
    Désolé pour la questions hors sujet…
    —sid

  • Décidément, à chaque fois que j’ai un problème, c’est ici que se trouve la solution. Non, pas chaque fois, mais souvent !
    Merci pour cette aide précieuse que vous m’apportez.
    Cordialement

  • Anne-Estelle

    MERCI MERCI MERCI MERCI MERCI MERCI MERCI MERCI !!!!!!!! 😉

  • Bonjour
    et bravo pour ce super site.
    j’ai exactement le meme problème sur le thème revolution lifstyle, mais le code que j’ai n’est pas exactement le meme. As tu une idée pour résoudre mon problème ?
    Sinon je n’ai pas besoin de cacher des catégorie, je voudrais toutes les afficher a la suite.

    Merci bcp

    Morgan

    mon code:

    have_posts()) : $recent->the_post();?>
    ID, « thumbnail », true) ): ?>
    <a href= » » rel= »bookmark »><img style= »float:left;margin:0px 10px 0px 0px; » src= »ID, « thumbnail », true); ?> » alt= » » width= »320″ />

  • oups me suis trompé de code dsl, voici le bon

    have_posts()) : $recent->the_post();?>
    ID, « thumbnail », true) ): ?>
    <a href= » » rel= »bookmark »><img style= »float:left;margin:0px 10px 0px 0px; » src= »ID, « thumbnail », true); ?> » alt= » » width= »320″ />

  • Hello !

    tout d’abord un grand merci pour tout tes tutos, ca apporte reellement beaucoup d’aide ! merci

    ensuite j’aurais un petit probleme avec le pagenavi et les query et je ne comprends pas d’ou cela peut il bien venir !

    je m’explique: mon theme possede 2 loops, le premier affiche le dernier article avec un affichage particulier et le deuxieme affiche les 2 articles suivants selon un autre affichage ! jusque la aucun probleme, cependant si je me rend sur la page 2 ou plus, il n’y a que l’article du premier loop qui change, le second loop ne m’affiche que les articles 2 et 3 de ma bdd ! comment faire ? ( si vous avez besoin que je poste des extraits de code, dites le, sinon j’attends vos reponses) merci !

    Lain.

  • Merci Francis tu me sauve la vie je commençais à péter un plomb !

  • En faîte tu ne me sauve pas tant la vie que ça 😀

    J’ai toujours le bug !

    J’ai fais comme ça :

    [code]

    [/]

    En sachant que j'ai une autre boucle avant en WP_query

    ... donc je me suis rendu sur le forum wp_pagenavi et même solution que la tienne et sur le forum wp pas de réponse...

  • J’ai trouvé tout seul la solution si ça peut aider quelqu’un dans votre query_posts : utilisez des double quotes  »  » et non des simples ‘ ‘ 😉

    Merci Fran6 pour ce fabuleux blog

  • Merci fran6 !!!

  • Combien de fois, je vais te dire merci pour cette astuce?! C’est ce que je cherche depuis longtemps! Merci beaucoup!

  • Bonjour et merci pour cette astuce.

    Cette astuce est-elle valable sur un template rattaché à une page ?

    Je m explique, j ai créer un template dans lequel je refais une boucle (elle fonctionne correctement). Juste avant le loop je lance mon query_posts avec votre astuce mais il semble que l’astuce ne fonctionne pas. En revanche en l’applicant à la page index.php du thème cela fonctionne.

    Confirmez-vous ? Auriez vous une solution ?

    Merci dans tous les cas

    Aurélien

  • pour ceux qui ont encore des problèmes avec ce système j’ai trouvé 2 solutions de rechange :

    http://theodin.co.uk/blog/desi.....posts.html (qui fonctionne bien mais oblige à modifier le fichier functions)

    http://scribu.net/wordpress/wp.....posts.html (en une seule petite ligne bien plu rapide).

    Merci quand même pour le fix il fonctionne de temps en temps mais pas dans tous les cas.

  • Oh que oui, ce poste dépanne bien, ca fait trois heures que j’essaie de comprendre ce problème et en faisant une petite requête google, je tombe sur ce post une aubaine !! ca marche !! merci infiniment du temps que je vais gagner !
    Je bookmark

  • Le plugin page navi ne fonctionne pas sur mon blog, seriez vous pourquoi?

  • Merci, vous avez solutionné mon problème !

  • clair et parfait,marci pour l’explication.

  • Ilona

    Merci !

  • Whalise

    un problème.. et comme d’habitude une solution sur ton blog ! merci !!

  • Merci, un moment que je tournais en rond avec une page articles, ce hack a réglé le problème.

  • Bonjour,

    Merci beaucoup pour cette technique, elle m’a bien aidé à régler mon soucis.

    Par contre, je ne comprends pas pourquoi sur ma page d’accueil j’ai 1 page sur 5 alors que si on regarde bien, seules les 3 premières pages contiennent des articles. Je voulais savoir s’il était possible de masquer les pages vides ?

    Je vous remercie par avance,
    Alex

  • Bonsoir je me permet de vous contacter suite a un problème de pagination tout mes articles s’affiches sur la première page et forcement quand je clique sur la page 2 le contenu est le même mais par contre dans les archives la pagination fonctionne super bien j’utilise le plug-in WP-PAGENAVI j’ai essayer pas mal de chose sur la boucle qui est sur le fichier index.php par exemple quand je mets le code qui est dans votre Tuto je relance le site la page devient blanche donc je suis obliger d’enlever le code et remettre celui du Plug-in a mon avis il ya un soucis dans la page d’accueil il doit certainement i avoir une boucle incompatible
    voila je vous fait part du code de l’index.php merci

    <div id= »post-« >
    « alignleft post_thumbnail »)); } ?>
    <a href=" » rel= »bookmark » title= »Permanent Link to « >
    <img src="/images/date.png » /> <img src="/images/user.png » /> ID)) { ?> <img src="/images/edit.png » />

    <?php the_content('Read more »‘); ?>

    <!–/post—>

    Not Found
    Sorry, but you are looking for something that isn’t here.

  • Merci pour cette astuce, ça faisait bien 2 mois que j’avais le problème sans trouver de solution ! Et merci à Ludo pour l’attention attirée sur les  » à la place des simples ‘ 🙂

Success, your comment is awaiting moderation.