Code Samples /

Random Ordering

Out-of-the-box Ajax Load More can not order posts by random, however, it can be achieved by running a custom WP_Query that builds an array of post IDs – the post IDs are then passed into the post__in shortcode parameter for display.

functions.php
<?php
$post_ids = [];
// Query ALL posts ordered by random.
$args = [
   'post_type'           => [ 'post' ],
   'orderby'             => 'rand',
   'posts_per_page'      => -1,
   'ignore_sticky_posts' => true,
];
$the_query = new WP_Query( $args );

while ( $the_query->have_posts() ) : $the_query->the_post();   
   $post_ids[] = $post->ID;  // Build array of post IDs.
endwhile; wp_reset_query();
   
// Pass $post_ids array to Ajax Load More post__in parameter.
echo do_shortcode( '[ajax_load_more post__in="'. implode( ',', $post_ids ) .'" orderby="post__in"]' ); 
?>
PHP

Note: Ordering by random is very server intensive and some hosts (e.g. WPEngine) disallow this orderby query parameter completely.


« Back to Code Samples