Mostrar dos publicaciones aleatorias de un tipo de publicación personalizado

10 ago 2013, 16:16:10
Vistas: 13.8K
Votos: 3

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; ?>
0
Todas las respuestas a la pregunta 1
3

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.

10 ago 2013 17:06:06
Comentarios

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

imrek imrek
22 jun 2015 10:47:25

@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.

s_ha_dum s_ha_dum
22 jun 2015 16:35:30

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

SParc SParc
25 feb 2018 13:59:07