[aide] M. Query Post

  • Statut : non résolu
15 sujets de 1 à 15 (sur un total de 73)
  • Auteur
    Messages
  • #462839
    Buzz labeille
    Participant
    Initié WordPress
    5 contributions

    Parce que y’en a marre de devoir présenter M. Query post un topic sur deux, voici un topic dédié à son utilisation.

    Avec la fonction Query Post on va pouvoir faire une tonne de choses ! C’est notamment très utile pour contrôler le nombre de billets à afficher, l’ordre de tri des billets, afficher les billets que de certaines catégories… Et plein d’autres choses ! Très utile pour la page d’index, de catégories, archives.

    On va donc voir simplement comment procéder pour effectuer chacune de ces tâches. Ce topic est tout public, débutant comme confirmé, vous êtes les bienvenus 🍺.

    1. Faut pas looper le site !

    La loop [en] ou la boucle en français est la fonction qui permet d’afficher les articles, elle commence généralement ainsi :

    <?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>

    La fonction Query Post qui va nous permettre de personnaliser l’affichage des billets se glisse entre if have posts et while have post : the post (ne m’en veuillez pas les barbus) de telle manière :

    <?php if (have_posts()) : ?>
    <?php query_posts(''); ?>
    <?php while (have_posts()) : the_post(); ?>

    C’est bon tout le monde suit ? On a donc introduit la fonction Query Post qui pour le moment ne comporte aucune consigne, cela ne va donc rien affecter.

    2. La personnalisation ça a du bon

    Maintenant que tout le monde sait de quoi on parle, on va passer aux choses sérieuses.

    2.1 Définir le nombre de billets à afficher

    <?php if (have_posts()) : ?>
    <?php query_posts('showposts=10'); 
    // on affiche 12 billets max, les autres paramètres restent par défaut
    ?>
    <?php while (have_posts()) : the_post(); ?>

    Applications possibles : utile si on ne veut pas afficher le même nombre d’article sur notre index que sur nos pages d’archives par exemple.

    Maintenant que vous avez compris comment fonctionne la loop et comment l’utiliser, on va être plus concis 😉.

    2.2 Définir la catégorie d’où seront affichés les billets

    query_posts(“cat=1”); //affiche les billets classés dans la catégorie dont l’ID est 1
    query_posts(“cat=-1”); //affiche les billets classés dans toutes les catégories mis à part celle dont l’ID est 1
    query_posts(“cat=1,2,3”); //affiche les billets classés dans les catégories dont les IDs sont les suivants : 1, 2, 3
    query_posts(“tag=tata-simone”); //affiche les billets ayant le tag “tata-simone”
    query_posts(“tag=tata-simone,tonton-andre”); //affiche les billets ayant le tag “tata-simone” ou “tonton-andre”
    query_posts(“tag=tata-simone+tonton-andre”); //affiche les billets ayant le tag “tata-simone” et “tonton-andre” (uniquement si ils comportent les 2)

    Applications possibles : peut servir pour afficher les billets d’une seule catégorie dans la sidebar, faire un encart sur la page d’accueil…

    2.3 Définir le mode de tri des billets

    query_posts(“order=desc”);//tri les billets par date du plus récent au plus vieux
    query_posts(“order=asc”);//tri les billets par date du plus vieux au plus récent
    query_posts(“orderby=author”);//tri les billets par auteurs
    query_posts(“orderby=category”);//tri les billets par catégories
    query_posts(“orderby=category”);//tri les billets par modification
    query_posts(“orderby=ID”);//tri les billets par ID

    Applications possibles : dans un site où l’on ne souhaite pas mettre en avant la fraîcheur de l’information.

    2.4 Afficher un billet particulier, une page particulière

    query_posts(‘p=1’); //affiche le billet dont l’ID est 1
    query_posts(‘page_id=1’); //affiche la page dont l’ID est 1
    query_posts(‘pagename=tata-simone’); //affiche la page dont le titre est “tata simone”

    Applications possibles : mis en valeur dans un but quelconque d’un post précis.

    2.5 Exclure les x premiers billets

    query_posts(“offset=10”); //affiche les billets à partir du 11ème

    Applications possibles : sur la page d’accueil (ou les pages d’archives), une fonction très intéressante qui permet de linker des posts assez vieux sous une mis en forme différente.

    2.6 Sélectionner une période particulière (dans le temps)

    query_posts(“hour=01”); //affiche les billets publiés lors de l’heure 1
    query_posts(“minute=1”); //affiche les billets publiés lors de la première minute d’une heure
    query_posts(“second=1”); //affiche les billets publiés lors de la première seconde d’une minute
    query_posts(“day=1”); //affiche les billets publiés le premier jour du mois
    query_posts(“monthnum=1”); //affiche les billets publiés lors du premier mois d’une année
    query_posts(“year=2000”); //affiche les billets publiés lors de l’année 2000

    Applications possibles : pour faire un retour dans le passé.

    3. A deux c’est mieux

    Mais on peut également cumuler ces paramètres !

    Exemple, si je souhaite afficher 8 billets de la catégorie ayant l’ID 5 et 7″ :

    query_posts(“showposts=8&cat=5,7”);

    Tadam !

    Pareil, si on souhaite afficher 3 billets du tag “tata-simone” en trillant les billets par auteur :

    query_posts(“showposts=3&tag=tata-simone&orderby=author”);

    Vous l’avez donc surement compris (si non, c’est pas la peine de faire des tests de QI), pour cumuler les paramètres il faut utiliser ‘&’.

    4. Voler de ses propres ailes

    Maintenant c’est à vous de jouer. Toutefois sachez qu’il existe encore d’autres paramètres que vous pouvez consulter sur la page du codex de WordPress.org [en] dédiée à M. Query Post.

    Je vous invite aussi à consulter la page dédiée à la démonstration de l’utilisation de la boucle [en] qui vous permettra de revoir les bases de la loop.

    PS : pourquoi pas “post-iter” ce topic (quasiment d’intérêt public) ?

    #644824
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    le probleme de query post c’est que ça marche jamais avec la navigation.
    Par exemple, si je veux afficher un seul article en page d’accueil et 10 dans les pages de categorie.
    Je configure wordpress pour qu’il affiche 10 articles et sur index.php j’utilise query_post pour qu’il affiche un seul article.
    Tu peux essayer, ça marche très bien. Sauf que la navigation vers les entrées précédentes ne marchent pas sur la page d’accueil.

    J’avais déjà signalé ce type de problème et depuis j’ai jamais trouvé de solution.

    L’année derniere si je me souviens bien, j’avais utilisé query_post pour afficher seulement certaines categories et en extraire d’autres dans les singe.php.
    ça marchait très bien sauf que là encore, ça n’était pas pris en compte dans le systeme de navig “article precedent article suivant”

    Est-ce que tu sais comment remédier à ce type de problèmes ?

    A+

    #644825
    Anonyme
    Inactif
    Padawan WordPress
    96 contributions

    Oui il faut utiliser $query_string en l’insérant de la manière suivante :

    query_posts(“$query_string”)
    query_posts(“$query_string&showposts=1”) //permet de lister un seul article même sur les pages de paginations

    #644826
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    Merci de ta réponse et de ta rapidité 🙂

    Chez moi ça marche pas. ça vient surement de moi, je ne suis pas un pro du php. ça affiche bien un unique billet en page d’accueil mais quand je clique sur “précédent” ça affiche une erreur 404

    Voici le code de mon index.php (rien d’extraordinaire, c’est le kubrik de base)

    
    
    	<div id="content" class="narrowcolumn">
    
    	
      
    	
    	
    
    		
    
    			<div class="post" id="post-“>
    				<h2><a href="” rel=”bookmark” title=””></a></h2>
    				<small> par  </small>
    
    				<div class="entry">
    					
    				</div>
    
    				<p class="postmetadata"><?php the_tags(__('Tags:', 'kubrick') . ' ', ', ', '<br />‘); ?>  |   </p>
    			</div>
    
    		
    
    		<div class="navigation">
    			<div class="alignleft"></div>
    			<div class="alignright"></div>
    		</div>
    
    	
    
    		<h2 class="center"></h2>
    		<p class="center"></p>
    		
    
    	
    
    	</div>

    Qu’en penses-tu ?

    #644827
    Anonyme
    Inactif
    Padawan WordPress
    96 contributions

    Tu as mal compris ce que j’ai dit (ou j’ai mal expliqué).

    Tu ne dois pas répéter query_string.

    Supprime la ligne :

    Et laisse simplement :

    #644828
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    N’étant pas sûr d’avoir compris, j’avais essayé aussi sans la 1ere ligne. ça ne fonctionne pas non plus.

    regarde : exemple
    si tu cliques pour voir l’article suivant : erreur 404

    ça marche quand tu le fais chez toi ?

    #644829
    Anonyme
    Inactif
    Padawan WordPress
    96 contributions

    Essaye ça :

    Si cela ne fonctionne pas je ferai des tests, j’utilise quasiment jamais la pagination WordPress alors c’est pas mon fort mais on va finir par trouver 😉.

    #644830
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    nan, ça marche pas non plus :-(

    #644831
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    je suis toujours preneur d’une solution 🙂)

    #644832
    nanaroide
    Membre
    Initié WordPress
    9 contributions

    vui…

    ou esqu’on “colle” ces ligne?

    on ma parlé de “template” mais bon….je découvre

    merci…

    #644833
    Pcn
    Membre
    Initié WordPress
    46 contributions

    Bonjour,

    j’aimerais exclure une catégorie et ses sous-catégories de du menu se trouvant dans le header.
    Je vois qu’il me faut utilisé ce code:

    query_posts(“cat=-1”);

    Mais je ne sais pas dans quel fichier l’insérer. Je suis allé dans le dossier de mon thème ( Guzel ) voir dans le header mais je n’ai pas trouvé la boucle.

    Dans quel fichier dois-je insérer le code? Si vous avez besoin de renseignements supplémentaires sur mon thème pour m’aider je suis totalement disposé à vous les fournir.

    Merci d’avance pour l’aide que vous m’apporterez,

    Pcn

    #644834
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    Non en fait tu n’utilises pas query_post dans ce cas.

    Je viens de regarder dans le thème que tu utilises : dans le header tu trouves cette ligne :

    C’est cette ligne qui affiche la liste des catégories. Tu peux en savoir plus sur l’utilisation de wp_list_categories en allant dans le codex
    Tu y apprendras notamment comment exclure une categorie de la liste en utilisant le parametre “exclude”.

    Par exemple ici, si tu voulais exclure la catégorie dont l’ID est 18 tu devrais rectifier ta ligne de code ainsi :

    Dis-moi si tu as réussi ou si tu as des problèmes à le faire.

    #644835
    Pcn
    Membre
    Initié WordPress
    46 contributions

    Ca fonctionne! Merci beaucoup!

    As-tu également une idée de la manière à supprimer la catégorie du widget “Catégories”?

    #644836
    Gueblo
    Participant
    Maître WordPress
    1058 contributions

    tu pourrais être + précis ? ^^

    Et avant de poser cette question, tu as regardé sur le lien que je t’ai donné ? http://codex.wordpress.org/Template_Tags/wp_list_categories

    #644837
    Pcn
    Membre
    Initié WordPress
    46 contributions

    En fait je veux exclure la catégorie du widget “Catégories” se trouvant dans la sidebar dynamique (modifiable dans wp-admin => Apparence => Widgets).

    Je vois dans le codex que je dois utiliser

     ,           
              ); ?>

    Maintenant la question est: dans quel fichier dois-je introduire ceci?

    Merci,

    Pcn

15 sujets de 1 à 15 (sur un total de 73)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.