Показать два случайных поста из пользовательского типа записи
Я использую приведённый ниже код для вывода информации из двух последних записей пользовательского типа (он также добавляет класс first к каждому второму элементу для целей вёрстки). Как изменить этот код, чтобы выводились два случайных поста?
<?php
$counter = 1;
// Добавляем параметр 'orderby' => 'rand' для получения случайных записей
$args = array(
'post_type' => 'custom_advert',
'posts_per_page' => 2,
'orderby' => 'rand' // Сортировка по случайному порядку
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
echo '<div class="sixcol ';
if ( $counter % 2 == 1 ) { echo 'first'; }
echo '"><a href="[используем произвольные поля для получения адреса ссылки]"><img src="[используем произвольные поля для вывода изображения]"></a></div>';
$counter++;
endwhile; ?>
Вам понадобится аргумент orderby
.
$args = array(
'post_type' => 'custom_advert',
'posts_per_page' => 2,
'orderby' => 'rand'
);
Это позволит получать записи в случайном порядке и остановится после выборки первых двух, таким образом вы получите две случайные записи.

Это "вычислительно" затратно, если у вас несколько тысяч записей? Я имею в виду случайный порядок.

@DrunkenMaster : WordPress использует MySQL RAND()
для этого, и этот оператор никогда не бывает по-настоящему эффективным. Но если вам это нужно, значит, это то, что вам нужно. Существуют довольно сложные попытки создать "лучший" RAND
, если поискать, но я никогда не видел в этом преимущества.

Я сделал плагин, используя этот код: https://wordpress.org/plugins/load-random-post/
