WordPress, controler l’affichage de votre liste de billets via query_posts()
Aujourd'hui je vais vous expliquer comment contrôler précisément l'affichage de votre liste de billets WordPress grâce à la fonction query_posts().
Tout d'abord, à quoi celà peut-il vous servir ?
Et bien grâce à query_posts(), vous allez pouvoir très facilement:
- Retirer une ou plusieurs catégories de votre liste de billets
- N'afficher qu'une ou deux catégories
- Afficher uniquement les billets qui ont un certain tag
- Afficher tous les billets rédigés par un même auteur
- Afficher une page ou un billet précis via son nom ou son ID
- Contrôler le nombre de billets à afficher
- Choisir l'ordre de tri des billets (par date, catégorie, titre, auteur)
- Inverser l'ordre
- Appliquer un offset sur la liste, pour commencer à afficher la liste en excluant un nombre X de premiers billets
- Afficher les billets qui ont été publiés à un moment précis (secondes, minutes, heures, jours, mois, années)
- Choisir le nombre de billets par page à afficher
Voilà, je pense que vous avez compris tout l'intérêt de cette fonction, qui en une seule ligne peut vous rendre bien des services !
Prèt ? C'est parti !
Comment on utilise la fonction query_posts() ?
C'est très simple, il faut placer la fonction juste au dessus du début de votre boucle, dans votre template.
query_posts("....");
while (have_posts()) : the_post();
...
endwhile;
?>
Donc on place query_posts() juste avant le while.
Exclure ou afficher uniquement les billets d'une ou plusieurs catégories
query_posts("cat=-4"); //Affiche tout sauf les billets de la catégorie avec une ID=4
query_posts("category_name=Categorie1"); //Affiche uniquement les billets de la catégorie "Categorie1"
query_posts("cat=1,2,4,5,7"); //Affiche uniquement les billets des catégories 1,2,4,5 et 7
Vous pouvez donc cumuler les catégories sans soucis, par contre l'exclusion de fonction qu'avec les ID, pas les noms.
Afficher uniquement les billets d'un ou plusieurs tags
query_posts("tag=google,yahoo"); //Affiche uniquement les billets qui ont le tag "Google" OU ""yahoo"
query_posts("tag=google+yahoo+msn"); //Affiche uniquement les billets qui contiennent les 3 tags !
Comme les tags n'ont pas de ID, il n'est pas encore possible d'en exclure, dommage. Par contre le choix entre OU et ET est assez intéressant !
Exclure ou afficher uniquement les billets d'une ou plusieurs Auteurs
query_posts("author=2"); //Affiche uniquement les billets de l'auteur avec une ID=2
query_posts("author=-4"); //Exclu les billets de l'auteur avec une ID=4
Donc ici ça fonctionne exactement comme pour les catégories, on peut cumuler et exclure par ID
Afficher un billet ou une page précise
query_posts("name=first-post"); //Affiche uniquement le billet nommé "first-post"
query_posts("page_id=7"); //Affiche uniquement la page avec une ID=7
query_posts("pagename=about"); //Affiche uniquement la page nommée "about"
Ici on pourrait se demander l'intérêt de n'afficher qu'un seul billet ou page ? Et bien c'est simple, de cette façon vous pouvez attribuer le contenu d'un encart de votre site à une page ou un billet (comme sur l'accueil de webinventif, le petit message de bienvenue est en fait un page unique). Ou alors pour simplement mettre en évidence un billet particulier.
Choisir le nombre de billets à afficher
Choisir la façon de trier les billets, et choisir le sens de tri
Commencer l'affichage en excluant un certain nombre des premiers billets
Afficher uniquement les billets postés à un moment précis
query_posts("minute=30"); //Afficher uniquement les billets qui ont été publiés pendant la 30ème minute (*:30)
query_posts("second=07"); //Afficher uniquement les billets qui ont été publiés pendant la 7ème seconde (*:*07)
query_posts("day=1"); //Afficher uniquement les billets qui ont été publiés pendant le 1er jour de la semaine (1)
query_posts("monthnum=2"); //Afficher uniquement les billets qui ont été publiés pendant le 2ème mois (2)
query_posts("year=2005"); //Afficher uniquement les billets qui ont été publiés pendant l'année 2005
Bon là j'avoue que seules l'année et le mois peuvent être intéressant, le reste ne servira quasiment jamais.
Choisir le nombre de billets par page
Cumuler les paramètres
Voilà, pour cumuler il suffit donc de lier les paramètre avec une esperluette "&"
Conclusions
Il faut aussi savoir que vous pouvez très bien cumuler les boucles sur votre page d'accueil ! Ainsi vous pouvez afficher plusieurs listes de billets avec des paramètres de sélection très différents. C'est mon cas sur webinventif, la page d'accueil comporte 5 boucles différentes 😉
Edit: Pour garder votre pagination intact, il faut rajouter le paramètre $query_string
à la requête ...
(Merci Christèle)
Inspiré de l'article de Andrés Nieto Porras, que j'ai traduit, détaillé et complété ...
-----
Pingback: Hot Links for 18/01/08 | Nowhere Else 2.0()
Pingback: Wordpress : query_posts | css-xhtml()
Pingback: Thèmes Wordpress | css-xhtml()
Pingback: Plug-in Simple Tags et solution query_posts pour la navigation « Saiko_Sama, geekette malgré elle (ou pas ? )()
Pingback: Advanced Category Excluder : l’exclusion a parfois du bon ! | Job Alternative()