get_post aleatorio y orderby no funcionan
Tengo este código que devuelve una lista de títulos de posts como enlaces, pero cuando agrego los parámetros 'orderby' y 'order' - devuelve resultados pero 'orderby, order, rand' no funcionan, ¿alguien puede decirme qué estoy haciendo mal? ¡Gracias!
<ul>
<?php $post; $cat_posts = get_posts(array('numberposts' => 10, 'orderby' => 'rand', 'order' => ASC, 'category' => $disciplineCatID));
foreach($cat_posts as $post) : ?>
<?php $postTitle = get_the_title(); if($title != $postTitle) :?>
<li><a href="<?php the_permalink(); ?>">›› <?php the_title(); ?></a></li>
<?php endif ;?>
<?php endforeach; ?>
</ul>

Sí, esta es la sintaxis correcta:
$args = array(
'orderby' => 'rand',
'order' => 'ASC'
);
query_posts( $args );
Sin embargo, los plugins pueden evitar que esto funcione correctamente. Intenta desactivar TODOS los plugins y ver si eso ayuda. Dos plugins conocidos que evitan que orderby=rand
funcione son Post Type Order
y WP_Sticky
.
Además, si tienes Post Types Order instalado, asegúrate de visitar la página de Administración y revisar la configuración. Puedes usar este plugin y evitar que reordene automáticamente las publicaciones:
http://img829.imageshack.us/img829/2616/pictureot.png
Luego puedes usar el código para Post Types Order para ordenar específicamente esas publicaciones en los lugares donde necesites que estén ordenadas mediante el orden personalizado/menú. Aquí está el código de ejemplo para ese plugin:
El siguiente código PHP aún devolverá la publicación en el Orden configurado:
$args = array(
'post_type' => 'feature'
);
$my_query = new WP_Query($args);
while ($my_query->have_posts())
{
$my_query->the_post();
(..tu código..)
}
O:
$posts = get_posts($args);
foreach ($posts as $post)
{
(..tu código..)
}
Si el "Auto Sort" está desmarcado, necesitarás usar los parámetros "orderby" y "order":
$args = array(
'post_type' => 'feature',
'orderby' => 'menu_order',
'order' => 'ASC'
);

Gracias por el aviso. ¡"Intuitive Custom Posts Order" definitivamente causa este problema!

Esto era extrañamente específico y correcto. Post Types Order lo causó. ¡Gracias!

No estoy usando ese plugin, pero muchos de los ejemplos en wordpress.org usan "sort_order" en lugar de "order", lo cual no funcionó, mientras que esto sí lo hace. Gracias.

Si estás alojado en WP Engine, necesitas habilitar manualmente el orden aleatorio en tus ajustes o de lo contrario 'orderby' => 'rand'
no funcionará.
https://wpexplorer-themes.com/total/docs/random-order-wpengine/

¿Por qué no intentas usar query_posts en su lugar?
Algo como:
$args = array(
'orderby' => 'rand',
'order' => 'ASC'
);
query_posts( $args );

prueba este código
<?php
remove_all_filters('posts_orderby');
query_posts('orderby=rand');
?>
obtuve la respuesta de aquí
http://www.reinaris.nl/wp/wordpress-random-post-order-not-working-orderbyrand/

Me encontré con el mismo problema y, por suerte, encontré este hilo. Probé una solución diferente, probablemente más sucia que las demás, pero que podría ser útil en algunos casos.
Básicamente, mezclé las publicaciones antes de mostrarlas:
<?php
$selectedPosts = get_posts($args);
shuffle($selectedPosts);
foreach ($selectedPosts as $selectedPost) :
setup_postdata( $selectedPost );
?>
<!-- elementos de la publicación aquí -->
<?php
endforeach;
wp_reset_postdata();
?>

Si tienes wp-engine en tu sitio WordPress, verifica la opción ALLOW ORDER BY RAND(). Consulta un artículo aquí: https://wpengine.co.uk/support/about-order-by-rand/
