Mostrar dos publicaciones aleatorias de un tipo de publicación personalizado
He configurado el código a continuación para mostrar información de las dos publicaciones más recientes de un tipo de publicación personalizado (también itera y agrega una clase 'first' a elementos alternos para fines de diseño). ¿Cómo lo modificaría para mostrar dos publicaciones aleatorias?
<?php
$counter = 1;
// Agregar 'orderby' => 'rand' para obtener posts aleatorios
$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="[usando meta personalizado para obtener la dirección del enlace aquí]"><img src="[usando meta personalizado para mostrar la imagen aquí]"></a></div>';
$counter++;
endwhile; ?>
Necesitas un argumento orderby
.
$args = array(
'post_type' => 'custom_advert',
'posts_per_page' => 2,
'orderby' => 'rand'
);
Esto debería obtener las publicaciones en orden aleatorio y detenerse después de recuperar las dos primeras, obteniendo así dos publicaciones aleatorias.

¿Esto es 'computacionalmente' costoso si tienes varios miles de publicaciones? Me refiero al orden aleatorio.

@DrunkenMaster : WordPress usa el RAND()
de MySQL para esto y ese nunca es un operador realmente eficiente, pero si es lo que necesitas, es lo que necesitas. Hay algunos intentos bastante complejos para obtener un RAND
"mejor" si buscas por ahí, pero nunca he visto el beneficio.

Hice un plugin usando este código: https://wordpress.org/plugins/load-random-post/
