Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get random post in Wordpress

How do I get a random post in Wordpress?

I would like to display a button on a page that, when pressed, goes to a random post from the blog. I don't want a random post to be displayed on the page, I just want a link that leads to that post. I tried searching for a code on Google and here at stackoverflow but no success.

Thanks...

UPDATE:

Here is my template code:

<?php /*Template Name: Random*/ ?>

<?php get_header(); ?>

<nav><?php wp_nav_menu(array('menu' => 'Main Nav Menu')); ?></nav>

<div id="main-content-archive">

<div class="grey-text">Random post</div>

        <?php $query = new WP_Query( array ( 'orderby' => 'rand', 'posts_per_page' => '1' ) );?>

        <?php if (have_posts()) : while ( $the_query->have_posts() ) : $the_query->the_post();
        echo '<li>';
        the_title();
        echo '</li>';
        ?>

<?php endwhile; ?>

<?php else : ?>

    <h2>Not Found</h2>

<?php endif; ?> 

</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
like image 373
rlab Avatar asked Dec 29 '11 19:12

rlab


People also ask

How to show random post in WordPress?

Display Random Posts in Sidebar Once installed, the Advanced Random Posts Widget plugin adds a widget to your WordPress dashboard. After clicking on Appearance > Widgets, you'll see a widget labeled “Random Posts.” Drag and drop it into your sidebar. In your sidebar, you can click on the widget to expand its settings.

How do I redirect a random post in WordPress?

To redirect users to a random post, you need to copy the random post query parameter from here and add it in your error pages and other pages as a link. Clicking on the link will redirect users to a different random post. You can also add a button for redirection on your blog.

What is random post?

WP Random Post Inside plugin will allow you to show random post inside the post. It will help you to reduce website bounce rate by transferring user to check other pages related post. It'll also helpful for seo by linking internal posts. Features Included: Related post inside single post.


2 Answers

create a page template, and use the following code to get a random post:

//Create WordPress Query with 'orderby' set to 'rand' (Random)
$the_query = new WP_Query( array ( 'orderby' => 'rand', 'posts_per_page' => '1' ) );
// output the random post
while ( $the_query->have_posts() ) : $the_query->the_post();
    echo '<li>';
    the_title();
    echo '</li>';
endwhile;

// Reset Post Data
wp_reset_postdata();

then in a page, just use:

<a href="the link to the page">see a random post</a>
like image 125
bingjie2680 Avatar answered Oct 18 '22 21:10

bingjie2680


I found this post which gave me desired results...

Here's a solution copy/pasted from the wpbeginner blog post. No copyright infringement intended.

Just add the following code to the functions.php file:

add_action('init','random_add_rewrite');
function random_add_rewrite() {
   global $wp;
   $wp->add_query_var('random');
   add_rewrite_rule('random/?$', 'index.php?random=1', 'top');
}

add_action('template_redirect','random_template');
function random_template() {
   if (get_query_var('random') == 1) {
           $posts = get_posts('post_type=post&orderby=rand&numberposts=1');
           foreach($posts as $post) {
                   $link = get_permalink($post);
           }
           wp_redirect($link,307);
           exit;
   }
}

Use mydomain.com/random/ as your href for your button that leads to the random post.

Thanks everyone who contributed for your help...

Cheers!

like image 27
rlab Avatar answered Oct 18 '22 22:10

rlab