Показать сообщения в случайных типах сообщений

В настоящее время я работаю над проектом в WordPress.

Здесь я должен получить все сообщения из двух пользовательских типов сообщений, а именно pt1, pt2.

Но здесь я хочу отображать сообщения со случайным типом сообщения (pt1, pt2).

Пример)

Я хочу отобразить первое сообщение от pt1, рядом с pt2 и снова pt1 и next pt2 и так далее …

Как я могу это сделать. Любая помощь? Это код:

$args = array( 'posts_per_page' => 5, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => array('pt1', 'pt2'), 'post_status' => 'publish' ); $posts = get_posts( $args ); $num=1; foreach($posts as $post) { if( $num % 2 == 0 ) echo $post->post_title.$post->post_type; else echo $post->post_title.$post->post_type; $num++; } 

Solutions Collecting From Web of "Показать сообщения в случайных типах сообщений"

Нет простого запроса, который сделает это (см. Ниже). Вам нужно будет обработать ваши результаты на PHP, чтобы получить сортировку, которую вы ищете. Что-то вроде этого:

 $args = array( 'posts_per_page' => 5, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => array('post', 'book'), 'post_status' => 'publish' ); $posts = get_posts( $args ); $even = $odd = array(); $ei = 0; $oi = 1; foreach ($posts as $p) { if ('post' == $p->post_type) { $odd[$oi] = $p; $oi = $oi + 2; } elseif ('book' == $p->post_type) { $even[$ei] = $p; $ei = $ei + 2; } } $posts = $odd + $even; ksort($posts); foreach($posts as $post) { echo $post->post_title.$post->post_type; echo '<br>'; } 

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

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