Показать два случайных поста из пользовательского типа записи

10 авг. 2013 г., 16:16:10
Просмотры: 13.8K
Голосов: 3

Я использую приведённый ниже код для вывода информации из двух последних записей пользовательского типа (он также добавляет класс 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; ?>
0
Все ответы на вопрос 1
3

Вам понадобится аргумент orderby.

$args = array( 
  'post_type' => 'custom_advert', 
  'posts_per_page' => 2,
  'orderby' => 'rand'
);

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

10 авг. 2013 г. 17:06:06
Комментарии

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

imrek imrek
22 июн. 2015 г. 10:47:25

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

s_ha_dum s_ha_dum
22 июн. 2015 г. 16:35:30

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

SParc SParc
25 февр. 2018 г. 13:59:07