Как выполнить запрос по нескольким категориям в WordPress?
Пытаюсь выполнить запрос по нескольким категориям в 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;

Используйте следующим образом
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();

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