I am working on a new WordPress site and I wanted to display a selection of random posts at the bottom of every page. It is pretty simple to do, but I also wanted to make sure that on single post pages, the current post would be excluded. That took a little bit more figuring out but I got it working.
Here is a quick piece of code to insert into your WordPress templates so that you can display a list of random posts, excluding the current post that is displayed.
<?php $post_id = get_the_ID(); $args = array( 'orderby' => 'rand', 'posts_per_page' => 5, 'post__not_in' => array( $post_id ) ); $rand_query = new WP_Query( $args ); echo '<ul>'; while ( $rand_query->have_posts() ) : $rand_query->the_post(); echo '<li><a href="' . get_permalink() . '" title="' . the_title_attribute() . '">' . the_title() . '</a></li>'; endwhile; echo '</ul>'; ?>
You can always change the number of random posts displayed by increasing or decreasing the ‘showposts’ variable. You can also make it category specific by adding a
'cat'=>24, to the $args array, where ’24’ is the category ID.