Как выполнить запрос по нескольким категориям в WordPress?

6 окт. 2014 г., 12:44:04
Просмотры: 14.9K
Голосов: 2

Пытаюсь выполнить запрос по нескольким категориям в WordPress, но безрезультатно, хотя в коде не вижу ошибок.

Вот мой код:

query_posts('posts_per_page=1&cat=5,1');

  while ($wp_query->have_posts()) : $wp_query->the_post(); 

  get_template_part('loop', 'single-home');

endwhile;
1
Комментарии

Проблема этого вопроса в том, что вы не уточняете, хотите ли вы посты в любой из категорий или они должны быть в обеих категориях одновременно.

Nora McDougall-Collins Nora McDougall-Collins
5 июл. 2023 г. 22:28:10
Все ответы на вопрос 2
2

Используйте следующим образом

query_posts( array( 'category__in' => array(5,1), 'posts_per_page' => 1, 'orderby' => 'title', 'order' => 'ASC' ) );

или

$my_query = new WP_query(array('category__and' => array(5,1))); 
while ($my_query->have_posts()) : $my_query->the_post(); 
6 окт. 2014 г. 12:50:53
Комментарии

первый вариант работает нормально

Jono Jono
6 окт. 2014 г. 13:10:03

если мой ответ вам помог, пожалуйста, отметьте его как решение, нажав на значок галочки

Zammuuz Zammuuz
6 окт. 2014 г. 13:13:27
1

Прежде всего, никогда не используйте query_posts

Примечание: Эта функция не предназначена для использования в плагинах или темах. Как будет объяснено далее, существуют более подходящие и производительные варианты для изменения основного запроса. query_posts() — это чрезмерно упрощённый и проблематичный способ изменить основной запрос страницы, заменяя его новым экземпляром запроса. Он неэффективен (повторно выполняет SQL-запросы) и может полностью не сработать в некоторых случаях (особенно часто при работе с пагинацией записей).

Вместо этого лучше использовать WP_Query для создания пользовательских запросов.

Во-вторых, ваша проблема заключается в параметре posts_per_page. Он установлен в значение 1. Это означает, что будет получена одна запись, которая будет либо из категории 1, либо из категории 5, в зависимости от того, какая запись новее между этими двумя категориями. Вам нужно увеличить значение 1, чтобы получить больше записей, или установить 1 в -1, чтобы получить все записи из этих двух категорий.

Также вы можете удалить параметр posts_per_page и заменить его на nopaging=true, чтобы получить все записи.

6 окт. 2014 г. 13:15:40
Комментарии

Это должен быть принятый ответ, по моему мнению. Избегайте использования query_posts.

Olivier Olivier
13 янв. 2023 г. 17:13:03