- Statut : non résolu
- Ce sujet contient 16 réponses, 6 participants et a été mis à jour pour la dernière fois par
Djoul, le il y a 13 années et 4 mois.
-
AuteurMessages
-
3 septembre 2007 à 12 h 47 min #453871
Bonjour,
Ma configuration WP actuelle
– Version de WordPress : 2.2.2
– Thème utilisé : Sandbox
– Plugins en place :
– Nom de l’hebergeur : OVH
– Adresse du site :Problème(s) rencontré(s) :
Salut à tous,
Existe-t-il une ressource autre que le codex qui reprend l’ensemble des possibilités du query_posts ? En fait, j’ai une requête particulière et je n’arrive pas à savoir si elle est faisable avec WP ou non.
En fait, sur la page d’accueil d’un blog, je veux pouvoir afficher en premier en haut, le dernier post d’une catégorie. Disons la catégorie 1. Donc je fais un query_posts avec showposts=1&cat=1.
Maintenant, en dessous, je veux retrouver tous les articles des autres catégories et de la catégorie 1, sauf celui-ci, c.a.d le dernier article de la cat=1. Et là, je ne sais pas quoi noter… Il n’y a pas une commande lastpost ou un truc comme ça. Ca ferait du style un loop complet – lastpost cat=1 …. Le truc con puisque je ne suis pas développeur mais c’est pour donner une idée…
Si quelqu’un peut m’orienter, ce serait super sympa !! 😉
Francis
3 septembre 2007 à 13 h 51 min #608901Bonjour Fran6,
pourquoi pas en utilisant get_post avec l’argument offset ?
http://codex.wordpress.org/Template_Tags/get_posts
Ca devrait être possible …
3 septembre 2007 à 14 h 12 min #608902en fait, ça ne doit pas trop être possible simplement vu que ta sélection ne correspond pas à une requête simple. Et malheureusement, query_post ne permet pas d’exclure d’article.
En gros, je ferais :
global $post; // Partie pour l’affichage de l’article unique query_post(‘cat=1&showposts=1’); … blabla $save_post = $post->ID; // Partie pour l’affichage des articles suivants : tous sauf le premier query_post(‘showposts=11’); // Pour en afficher 10 $i=1; while (have_post()) : the_post(); if ($i>10) break; if ($post->ID == $save_post) continue; … blabla … $i++; endwhile;
A enrober avec les adhoc en fonction du reste, bien entendu.
3 septembre 2007 à 14 h 18 min #608903T’es un amour Alakhnor, mais je ne comprends pas trop ton code !!! :boulet:
Pour la première partie concernant le premier post seul, pas de soucis. Par contre, pour la suite… Je comprends qu’on dit à WP d’en afficher 11 (pas dur…😇) mais tu mets une condition s’il y en a plus de 10 ?
Le truc avec get_posts et le offset c’est que pour la deuxième partie, si je prends l’exemple suivant ça ne fonctionne pas:
1. N’oublions pas que l’article tout en haut de la page appartient à la cat=1, catégorie “IMPORTANT”, par exemple.
2. J’écris un article dans la catégorie 2. Il ne va pas appraître tout en haut puisqu’il n’est pas de la catégorie 1, mais il ne va pas apparaître dans les articles du dessous non plus parce que j’ai mis l’offset=1… non ?Pas évident cette histoire… 😉 Mais intéressant à creuser !!! :happy:
Il nous faudrait un truc du style: “all except cat=1&offset=1”
3 septembre 2007 à 14 h 39 min #608904En fait, j’en récupère 11 avec le query_posts. query_posts se contente de récupérer les informations, après, on en fait ce qu’on veut. 🙂
Mais si dans les 11 se trouve le post affiché précédemment, je le saute (la ligne avec continue).
Et s’il ne se trouve pas dans les 11, je m’arrête à 10 (la ligne avec break).De cette manière, on a toujours 10 posts traités/affichés (dans la partie blabla…).
5 septembre 2007 à 13 h 30 min #608905OK, je vais regarder ça et te dirai si ça marche ! Encore merci ! 😉
5 septembre 2007 à 20 h 29 min #608906Je radine ma fraise en provenance d’une autre discussion sur les bons conseils d’alakhnor.
Je suis un peu paumé avec le code indiqué plus haut car je n’ai pas trop capté comment l’intégrer dans ma boucle et comment l’adapter à ce que je veux : faire apparaître le post 58 en haut de la catégorie 10 (bien qu’il existe des posts plus récents dans cette catégorie) mais l’empêcher d’apparaître dans la page d’accueil (sans pour autant exclure l’ensemble de la catégorie).Sur mon index.php, j’ai :
<div id="left"> <div class="entry"> <div class="post" id="post-“> <h2><a href="” rel=”bookmark” title=”Lien permanent vers “></a></h2> <ul class="metalinks"> <li class="auteur"></li> <li class="date">le </li> <li class="category"></li> </ul> <ul class="icon"> <li class="comment"><a href="#comments”></a></li> <li class="pencil"> 0) : ?><a href="#more-“></a>comment_status) : ?> 0) { _e(‘ ou ‘); } ?><a href="#respond”></a> 0) : ?> 0) { _e(‘ ou ‘); } ?><a href="#comments”></a></li> <li class="feed"></li> <?php edit_post_link(__('Modifier'), '<li class="pencil">‘, ‘</li>‘); ?> </ul> <p></p>
Introuvable
Désolé, mais vous cherchez quelque chose qui ne se trouve pas ici.
Désolé de revenir à la charge, mais je patauge.
5 septembre 2007 à 21 h 02 min #608907Pour le index.php :
<div id="left"> 10) break; ?> ID == $save_post) continue; ?> <div class="entry"> <div class="post" id="post-“> <h2><a href="” rel=”bookmark” title=”Lien permanent vers “></a></h2> <ul class="metalinks"> <li class="auteur"></li> <li class="date">le </li> <li class="category"></li> </ul> <ul class="icon"> <li class="comment"><a href="#comments”></a></li> <li class="pencil"> 0) : ?><a href="#more-“></a>comment_status) : ?> 0) { _e(‘ ou ‘); } ?><a href="#respond”></a> 0) : ?> 0) { _e(‘ ou ‘); } ?><a href="#comments”></a></li> <li class="feed"></li> <?php edit_post_link(__('Modifier'), '<li class="pencil">‘, ‘</li>‘); ?> </ul> <p></p> </div> </div> <div class="alignleft"></div> <div class="alignright"></div> <div class="entry"> <h2>Introuvable</h2> <p class="center">Désolé, mais vous cherchez quelque chose qui ne se trouve pas ici.</p> </div> </div>
5 septembre 2007 à 21 h 03 min #608908Pour le category.php :
get_queried_object(); ?> <div id="left"> <div class="entry"> <div class="post" id="post-“> <h2><a href="” rel=”bookmark” title=”Lien permanent vers “></a></h2> <ul class="metalinks"> <li class="auteur"></li> <li class="date">le </li> <li class="category"></li> </ul> <ul class="icon"> <li class="comment"><a href="#comments”></a></li> <li class="pencil"> 0) : ?><a href="#more-“></a>comment_status) : ?> 0) { _e(‘ ou ‘); } ?><a href="#respond”></a> 0) : ?> 0) { _e(‘ ou ‘); } ?><a href="#comments”></a></li> <li class="feed"></li> <?php edit_post_link(__('Modifier'), '<li class="pencil">‘, ‘</li>‘); ?> </ul> <p></p> </div> </div> <div class="alignleft"></div> <div class="alignright"></div> <div class="entry"> <h2>Introuvable</h2> <p class="center">Désolé, mais vous cherchez quelque chose qui ne se trouve pas ici.</p> </div> cat_ID); ?> 10) break; ?> ID == $save_post) continue; ?> <div class="entry"> <div class="post" id="post-“> <h2><a href="” rel=”bookmark” title=”Lien permanent vers “></a></h2> <ul class="metalinks"> <li class="auteur"></li> <li class="date">le </li> <li class="category"></li> </ul> <ul class="icon"> <li class="comment"><a href="#comments”></a></li> <li class="pencil"> 0) : ?><a href="#more-“></a>comment_status) : ?> 0) { _e(‘ ou ‘); } ?><a href="#respond”></a> 0) : ?> 0) { _e(‘ ou ‘); } ?><a href="#comments”></a></li> <li class="feed"></li> <?php edit_post_link(__('Modifier'), '<li class="pencil">‘, ‘</li>‘); ?> </ul> <p></p> </div> </div> <div class="alignleft"></div> <div class="alignright"></div> <div class="entry"> <h2>Introuvable</h2> <p class="center">Désolé, mais vous cherchez quelque chose qui ne se trouve pas ici.</p> </div> </div>
6 septembre 2007 à 17 h 18 min #608909Merci beaucoup, alakhnor. Je n’aurais jamais eu l’idée de placer les bouts de code de cette manière ni de créer un fichier category.php.
Il ne me reste plus qu’à tester ça. J’ai fait une tentative vite fait avec index.php, mais ça m’a mis le souk dans l’affichage des catégories (sans doute parce que je n’avais pas de category.php, mais je n’avais rien sous la main pour le créer et l’envoyer). Faut que je fasse ça à tête reposée…
Je reviendrai dire si ça marche.7 septembre 2007 à 17 h 33 min #608910Dans le même genre, si je veux lister les 5 posts d’une même catégorie, sans afficher le dernier post ?
ma requête actuelle, mais elle m’affiche les 5 derniers posts de la catégorie active, jusqu’à là ça me va, mais je ne suis pas une brute en php et je ne sais pas trop comment empecher l’affichage du dernier post
have_posts()) : $recent->the_post();?> <a href="” class=”tags”></a>,
Merci 🙂
7 septembre 2007 à 18 h 05 min #608911Tu rajoutes offset=1 dans ton WP_query.
new WP_Query(“offset=1&showposts=5&cat=”.the_category_ID(FALSE));7 septembre 2007 à 18 h 09 min #608912alakhnor wrote:Tu rajoutes offset=1 dans ton WP_query.
new WP_Query(“offset=1&showposts=5&cat=”.the_category_ID(FALSE));Niquel !
Merci beaucoup 🙂
Par contre, désolé de faire détourner un peu le sujet, tu n’as pas une idée pourquoi du coup mon plugin
STP_PostTags que j’utilise de cette maniere ( ><?php STP_PostTags('%tagname%‘); ?> )ne fonctionne plus, mais quand j’enleve le code pour lister les derniers posts d’une catégorie (le code cité plus haut), ce plugin remarche ?
7 septembre 2007 à 19 h 34 min #608913Parce qu’AmO n’a pas encore sorti la dernière version ? ^^
10 septembre 2007 à 10 h 10 min #608914J’ai essayé la solution proposée par alakhnor pour remonter un post en tête d’une catégorie tout en l’excluant de la page d’accueil. J’ai l’impression que ça marche, mais ça va être compliqué car il y a d’autres posts d’autres catégories auquels je veux infliger le même traitement et par ailleurs, je me heurte à un nouveau problème avec le plug-in simple-tagging.
Pour faire plus simple, je vais donc plutôt exclure de la page d’accueil la catégorie-mère à laquelle appartiennent ces posts (et tant pis pour les autres posts de la même catégorie). Ensuite seulement, je verrai comment faire remonter chacun de ces posts en tête de leurs sous-catégories respectives.
Commençons par l’exclusion de la catégorie-mère identifiée avec le numéro 7.
Et c’est déjà à ce stade que survient mon problème de tags qui m’empêche d’aller plus loin. J’ai en effet remarqué que dès que je mettais un query_posts, j’obtenais un problème dans l’affichage des tags sur les posts dans la page d’accueil.
J’ai essayé plusieurs trucs, d’abord :placé juste après
puiset même
post; query_posts($query_string.’&cat=-7′); ?>
(sans trop comprendre, mais histoire de voir si ça pouvait changer quelque chose).
En fait, dans tous les cas, les 7 premiers posts s’affichent normalement avec leurs tags, ce qui correspond à la ligne
<p></p>
et les posts de la catégorie 7, celle que j’ai exclue ne s’affichent plus, comme voulu.
Mais les posts suivants affichent “aucun” en guise de tags, alors qu’ils sont pourtant taggés et que leurs tags apparaissent normalement en passant par les catégories ou les archives.Est-ce un bug de simple-tagging (j’ai la dernière version 1.6.8.1) ? Ou ai-je oublié quelque chose dans le query_posts ?
-
AuteurMessages
- Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.