Utilisation de WP_Query pour interroger plusieurs catégories avec des publications limitées par catégorie?
-
-
Comment voulez-vous qu'ils soient commandés?How do you want them to be ordered?
- 0
- 2010-08-25
- MikeSchinkel
-
récemmentpublié .. donc les 5plus récents de la catégorie A,lestrucs lesplus récents de la catégorie Betc.recently published.. so most recent 5 of category A, most recent stuff of Category B etc..
- 0
- 2010-08-25
- Amit
-
D'accord,voirma réponse ci-dessousOkay, see my answer below
- 0
- 2010-08-25
- MikeSchinkel
-
2 réponses
- votes
-
- 2010-08-25
WP_Query()
ne prendpasen charge quelque chose comme First X For Each Cat .Au lieu deWP_Query()
,vouspouvez utiliserget_posts()
sur chacune de vos catégories,pour ainsi diretroisfois:<?php $posts = array(): $categories = array(2,4,8); foreach($categories as $cat) { $posts[] = get_posts('numberposts=5&offset=1&category='.$cat); } ?>
$posts
contient désormais les cinqpremiersmessages de chaque catégorie.WP_Query()
does not support something like First X For Each Cat. Instead ofWP_Query()
you can useget_posts()
on each of your categories, so to say three times:<?php $posts = array(): $categories = array(2,4,8); foreach($categories as $cat) { $posts[] = get_posts('numberposts=5&offset=1&category='.$cat); } ?>
$posts
now contains the first five posts for each category.-
n'est-cepas 3 coups au db?Je voulais savoir si vouspouviez lefaireen un seul coup carje pensais que c'étaitplusefficace.isn't that 3 hits to the db? I wanted to know if you can do it in 1 hit cause I thought it's more efficient.
- 0
- 2010-08-25
- Amit
-
etbien c'est à ça que sert la db,non?interrogez les données àpartir de celui-ci.labase de donnéesestfaitepour cegenre de choses.c'estprobablementplus rapide que d'exécuter une requête SQL compliquée que vous demandez.n'ayezpaspeur d'utiliser letruc.s'il casse votre site,signalez-leici.well that's what the db is for, right? query the data from it. the db is made for such stuff. it probably is faster then running a complicated sql query you're asking for. don't fear to use the stuff. if it breaks your site, report it here.
- 0
- 2010-08-25
- hakre
-
mm .. compris,je ne saispasgrand-chose sur l'efficacité dephp/mysql/db (j'aimeraisen savoirplus),j'étais sûr quemoins de résultats sontmeilleurs,puisj'analyse le résultatmoi-même.mm.. got it, I don't know much about php/mysql/db efficiency (would like to read more), was sure less hits is better and then parse the result myself.
- 0
- 2010-08-25
- Amit
-
ehbien,c'est vrai,généralementplus c'estpluset moins c'estmoins.Maisessayez d'abord detester.Plus votre logicielest "mauvais",plusil a depotentiel d'optimisation.Il vaut doncmieux apprendrepar lapratique,car à lafin vous écrirez demeilleurs logicielsplus rapidementet des logicielsplus rapides.well, true, generally more is more and less is less. But try and test first. The "badier" your software is, the more potential it has for optimization. So better learn by doing, because in the end you will write better software faster and better write faster software.
- 1
- 2010-08-25
- hakre
-
- 2010-08-25
Jene connaispas demoyen d'obtenir les cinqpremiersmessagespour chacune des catégories dans une seule requête.Sijamais vousne comptez que 45publications,accéder unefois à labase de donnéeset obtenir vos cinqpublicationspour chaque catégorieestprobablement l'approche laplusefficace.Toucher labase de donnéestroisfoiset combiner les résultatsn'estpas unemauvaise chose.
I don't know of a way to get the first five posts for each of the categories in a single query. If you're ever going to only have 45 posts, then hitting the database once and getting your five posts for each category is probably the most efficient approach. Hitting the database three times and combining the results isn't a bad thing though.
J'ai 3 catégories avec chaque 15 articles,je veuxfaire UNE requête à labase de donnéesen apportant seulement 5premiers articlespour chaque catégorie,commentpuis-jefaire?
Si cen'estpaspossible,qu'est-ce quiestplusefficace,obtenirtous les articles de la catégorieparentet lesparcouriren boucle ou créer 3 requêtes différentes?