Использование WP_Query для запроса нескольких категорий с ограниченным количеством сообщений для каждой категории?
-
-
Как вы хотите их заказать?How do you want them to be ordered?
- 0
- 2010-08-25
- MikeSchinkel
-
недавно опубликовано ... так что последние 5 материалов категории A,самые последние материалы категории B и т. д.recently published.. so most recent 5 of category A, most recent stuff of Category B etc..
- 0
- 2010-08-25
- Amit
-
Хорошо,см. Мой ответ нижеOkay, see my answer below
- 0
- 2010-08-25
- MikeSchinkel
-
2 ответ
- голосов
-
- 2010-08-25
WP_Query()
не поддерживает что-то вроде First X For Each Cat .ВместоWP_Query()
вы можете использоватьget_posts()
для каждой из ваших категорий,так сказать три раза:<?php $posts = array(): $categories = array(2,4,8); foreach($categories as $cat) { $posts[] = get_posts('numberposts=5&offset=1&category='.$cat); } ?>
$posts
теперь содержит первые пять сообщений для каждой категории.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.-
разве это не 3 попадания в БД?Я хотел знать,сможете ли вы сделать это за 1 удар,потому что я думал,что это более эффективно.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
-
ну вот для чего дб,верно?запросить данные из него.база данных создана для таких вещей.это,вероятно,быстрее,чем выполнение сложного запроса sql,который вы просите.не бойтесь использовать этот материал.если это приведет к поломке вашего сайта,сообщите об этом здесь.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
-
мм .. понял,я мало что знаю об эффективностиphp/mysql/db (хотел бы узнать больше),был уверен,что чем меньше совпадений,тем лучше,а затем сам проанализирую результат.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
-
ну правда,в общем больше больше и меньше меньше.Но сначала попробуйте и проверьте.Чем «хуже» ваше программное обеспечение,тем больше у него возможностей для оптимизации.Так что лучше учиться на практике,потому что в конечном итоге вы будете писать лучшее программное обеспечение быстрее и лучше писать более быстрое программное обеспечение.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
Я не знаю,как получить первые пять сообщений для каждой из категорий в одном запросе.Если у вас когда-либо будет всего 45 постов,то,возможно,наиболее эффективным подходом будет однократное обращение к базе данных и получение пяти постов для каждой категории.Однако трижды ударить по базе данных и объединить результаты - неплохая вещь.
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.
У меня есть 3 категории по 15 сообщений,я хочу сделать ОДИН запрос к базе данных,получив только 5 первых сообщений для каждой категории,как я могу это сделать?
Если это невозможно,что более эффективно: получить все сообщения для родительской категории и просмотреть их в цикле или создать 3 разных запроса?