Intereting Posts
как получить правильную категорию сообщения в случае нескольких категорий? отдельные категории с запятой и окруженные одиночной цитатой WordPress meta_query не работает Как пользоваться английским и американским английским языком? Как предполагается использовать шаблон cart.php WooCommerce? Получить все идентификаторы изображений из медиа-библиотеки wp_editor только в текстовом режиме (без TinyMCE) Нефильтрованный html с update_post_meta Как игнорировать дополнительные пробелы в функциях перевода, таких как _e? Список авторов, основанный на недавнем активном Добавить пользовательское имя типа сообщения в ссылку term? Как обновить термины в базе данных из конкретной таксономии без плагина? WP форма с AJAX, но отправка электронной почты не работает Пользовательское сообщение при удалении плагина Изменить страницу, показанную после входа в WordPress?

Получать смешанные случайные сообщения категории

У меня есть 3 категории: A, B, C. A имеет около 1000 должностей, B имеет около 300 должностей, а C имеет 50 должностей. Когда я запрашиваю 5 сообщений, упорядоченное случайным образом. Я получаю в основном сообщения из категории A.

Как получить смешанные категории случайных сообщений, таких как 3 из A, 1 из B и 1 из C?

Я взбесил это:

echo '<ul>'; the_random_posts(); echo '</ul>'; /** * Send random posts to the browser (STDOUT). */ function the_random_posts() { // Use your own category ids. $random_posts = array_merge( get_random_posts( 31, 3 ), get_random_posts( 11, 1 ), get_random_posts( 24, 1 ) ); foreach ( $random_posts as $post ) { // Change this line to code you want to output. printf( '<li><a href="%s">%s</a></li>', get_permalink( $post->ID ), get_the_title( $post->ID ) ); } } /** * Get $post_count random posts from $category_id. * * @param int $post_count Number of random posts to retrieve. * @param int $category_id ID of the category. */ function get_random_posts( $category_id, $post_count ) { $posts = get_posts( array( 'posts_per_page' => $post_count, 'orderby' => 'rand', 'cat' => $category_id, 'post_status' => 'publish', ) ); return $posts; } 

Если какие-либо должности находятся в двух или более выбранных категориях, есть вероятность, что сообщение будет повторяться (например, сообщение, которое относится как к категории A, так и к категории B). Статическая переменная с массивом ранее полученного сообщения может это исправить.

Этот алгоритм печатает сообщения в том порядке, в котором они были вызваны.

 get_random_posts( 31, 3 ), // First, 3 random posts from Category A get_random_posts( 11, 1 ), // Then, 1 random post from Category B get_random_posts( 24, 1 ) // Then, 1 random post from Category C 

Если вам нужен случайный список, $random_posts .