Я создаю раздел на сайте, где объединяю два разных типа записей в один цикл, а затем отображаю их случайным образом. Проблема в том, что мне трудно найти способ ограничить количество постов для каждого типа.
Вот что я попробовал:
Один запрос с несколькими типами записей может быть выполнен с помощью массива:
$args = array( 'post_type' => array( 'photos', 'quotes' ), ...
... но не может быть ограничено определенным количеством сообщений для каждого типа.
Объединение двух массивов аргументов запроса перед запуском на нем WP_Query :
$photos = array( 'post_type' => 'photos', 'posts_per_page' => 15, 'orderby' => 'rand' ); $quotes = array( 'post_type' => 'quotes', 'posts_per_page' => 5, 'orderby' => 'rand' ); $args = $photos + $quotes; // Also tried array_merge( $photos, $quotes );
Не повезло в этом. Что происходит, последняя переменная
$quotes
перезаписывает$photos
и показывает только кавычки.Объединение двух объектов WP_Query вместе через приведение типов:
$photos_query = new WP_Query( $photos ); $quotes_query = new WP_Query( $quotes ); $result = (object)array_merge( (array)$photos_query, (array)$quotes_query );
... и так далее.
Возможно, я мог бы использовать SQL-запрос прямо к базе данных, но мне нужно иметь возможность комбинировать эти два отдельных типа записей для одного цикла, расположенного случайным образом, И ограниченного определенным количеством сообщений для каждого типа.
Спасибо за вашу помощь!
источник
UNION
какого-то вида в sql для каждого post_type?@mridual aggarwal ваш ответ очень хороший, но, к сожалению, он на самом деле не объединяет 2,
wp_query
а показывает только посты обоих в порядке, я имею в виду 5 постов из первого и 5 из второго, но не отсортирован все в одном, поэтому у меня есть это решение и оно точно достигло цели для себя, по крайней мереисточник