Я работаю над темой wordpress и должен выбирать записи, которые находятся в нескольких категориях, для создания меню. Я мог бы настроить его на работу с тегами или комбинацию тэгов и категорий, но в конце концов мне нужно иметь возможность выполнять поиск по нескольким cat/tag. Единственная встроенная функция wordpress, которую я смог найти, которая позволяет несколько И искать в cat/tag, является функцией query_posts как таковой:
query_posts(array('category__and' => array(list_of_cats)))
Есть две проблемы с этим. Первое заключается в том, что wp docs говорят, что не использовать его. Вторая проблема - настоящая проблема в том, что мне нужно знать, сколько сообщений было запрошено до запуска моего цикла, поскольку я не хочу создавать подменю, которые пусты или имеют только один или два элемента.
Альтернативой является запуск моего собственного запроса, но я не могу определить правильную инструкцию для поиска сообщений в выбранных категориях. Я могу визуализировать, что должно произойти, чтобы искать две категории, но она становится нечеткой в 3+.
Я могу выполнить несколько независимых запросов, а затем использовать array_intersect, чтобы найти те, которые соответствуют всем запросам, но я хотел бы немного расширить свои знания mysql и/или wp.
В заключение, я был бы признателен за ответ на любой из следующих вопросов:
1 - альтернатива query_posts(), которая допускает множественное соответствие AND
2 - способ найти количество сообщений, которые будут зацикливаться при использовании query_posts()
3 - некоторая магия mysql, которая запускает большой союз по нескольким запросам в одну и ту же таблицу
Заранее спасибо
"Если вы хотите создать отдельные циклы вне основного, вы должны использовать get_posts().
Примечание. Начиная с версии 3.0, массив идентификаторов страниц также может использоваться для параметров include и exclude.
Довольно уверен, что вы можете сделать что-то вроде:
$wp_query->post_count
Получить общее количество запрошенных сообщений.
Да, согласно WPQuery:
get_posts() Получение и возврат запрошенных сообщений из базы данных. Также заселяем $posts и $post_count.
:)