How to Display Random Posts in WordPress

Posted on October 10th, 2009 by in Tutorials | 12 Comments  
How to Display Random Posts in WordPress

Due to the natural structure of blogs, articles end up being buried down once they get old. Most new users join and pick up from the moment they join, and they never bother going back to one of your good posts. One of the easiest way to give a new life to your older posts is by displaying them in the sidebar. In this tutorial, we will share how you can display random posts in your WordPress.

All you have to do is open your sidebar.php, or any other file you like to add it in and paste the following code:

<li><h2>Random Post</h2>
<ul>
<?php $posts = get_posts('orderby=rand&numberposts=5'); foreach($posts as $post) { ?>
<li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</li>
<?php } ?>
</ul>
</li>

You can customize the styling around it. If you want to display more than 5 posts, simply change the number 5 to the number of your choice.

About

Editorial Staff at WPBeginner mainly Syed and David.

Post comment as twitter logo facebook logo
Sort: Newest | Oldest
rajkanuri 6 pts

I have used the same code but it is displaying same posts for 5 times.. what could be the issue..

wpbeginner 50 pts moderator

rajkanuri The issue is within your theme. Usually when a query is not resetted properly, this will follow that query. It is mostly caused by recent posts widget, but its not limited to that.

mindrise 10 pts

how can I show only a list of posts that came before the current post your on. example:

if you post #5 the sidebar list posts 1-4 sam as if you go to post 9 side bar will list posts 1-8.

any idea?

wpbeginner 50 pts moderator

mindrise If you use the loop and then query_post, you should be able to do this.

How would you add the parameter to display posts only in a specific category as well as randomly and 5 at a time?

You can add cat=categoryid << and then keep the other code the same.

I am considering doing this same thing, but not in sidebar, I wish to place it right after the current post ends.

By the way, instead of displaying the_title, you can just put "Read a Random Post" and limit it to show only one. Create a nice button and you've got a "read a random post button" like you see on some special navigation bars sometimes.

helpful post, thanks a lot..

Tweets about us: