Verwenden Sie WP_Query, um mehrere Kategorien mit begrenzten Beiträgen pro Kategorie abzufragen?
-
-
Wie sollen siebestellt werden?How do you want them to be ordered?
- 0
- 2010-08-25
- MikeSchinkel
-
kürzlich veröffentlicht .. also dieneuesten 5 der Kategorie A,dieneuesten Sachen der Kategorie Betc ..recently published.. so most recent 5 of category A, most recent stuff of Category B etc..
- 0
- 2010-08-25
- Amit
-
Okay,siehemeine Antwort untenOkay, see my answer below
- 0
- 2010-08-25
- MikeSchinkel
-
2 Antworten
- Stimmen
-
- 2010-08-25
WP_Query()
unterstützt soetwas wie First X For Each Cat nicht.Anstelle vonWP_Query()
können Sieget_posts()
fürjede Ihrer Kategorien verwenden,sozusagen dreimal:<?php $posts = array(): $categories = array(2,4,8); foreach($categories as $cat) { $posts[] = get_posts('numberposts=5&offset=1&category='.$cat); } ?>
$posts
enthältjetzt dieerstenfünf Postsfürjede Kategorie.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.-
sind dasnicht 3 Trefferfür die Datenbank?Ich wollte wissen,ob Sieesmit einem Treffer schaffen,weilich dachte,esisteffizienter.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
-
Nun,dafürist die Datenbank da,oder?Fragen Sie die Daten ab.Die Datenbankistfür solche Sachengemacht.Esist wahrscheinlich schneller als das Ausführeneiner komplizierten SQL-Abfrage,nach der Siefragen.Hab keine Angst,das Zeug zubenutzen.Wennes Ihre Websitebeschädigt,melden Siees hier.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 .. verstanden,ich weißnicht viel über die Effizienz von PHP/MySQL/DB (würdegernemehr lesen),war sicher,dass weniger Trefferbesser sind und analysiere dann das Ergebnis selbst.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
-
Nun,wahr,im Allgemeinenistmehrmehr und wenigerist weniger.Aber versuchen Siees zuerst.Je "schlechter" Ihre Softwareist,destomehr Potenzial hat siefür die Optimierung.Lernen Sie alsobesser,denn am Ende schreiben Sie schnellerbessere Software und schreiben schneller schnellere Software.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
Ich kenne keine Möglichkeit,dieerstenfünf Beiträgefürjede der Kategorienin einereinzigen Abfrage abzurufen.Wenn Siejemalsnur 45 Beiträge haben werden,istes wahrscheinlich dereffizienteste Ansatz,einmal auf die Datenbank zuzugreifen und Ihrefünf Beiträgefürjede Kategorie zuerhalten.Dreimal auf die Datenbank zuzugreifen und die Ergebnisse zu kombinieren,istjedoch keine schlechte Sache.
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.
Ich habe 3 Kategorienmit jeweils 15 Beiträgen. Ichmöchte EINE Abfrage an die Datenbank senden undnur 5erste Beiträgefürjede Kategorieerstellen. Wie kannich dastun?
Falls diesnichtmöglichist,wasisteffizienter,wenn alle Beiträgefür die übergeordnete Kategorie abgerufen und durchlaufen werden oder 3 verschiedene Abfragenerstellt werden?