WordPress.org

Support

Support » Plugins and Hacks » Hacks » [Resolved] Display only 1 random post from the most recent 20

[Resolved] Display only 1 random post from the most recent 20

  • Hello, I am trying to display only 1 random post from the most recent 20 posts. Currently, this is the code I have. The issue is, only the latest post is displaying since showposts =>1.

    $post_id = get_the_ID();
        $args = array(
          'orderby' => 'post_date',
          'orderby' => 'rand',
          'showposts'=>1,
          'post__not_in' => array($post_id),
          'meta_query' => array(array('key' => '_thumbnail_id'))
        );
    
        $rand_query = new WP_Query($args);
    
        while ($rand_query->have_posts()) : $rand_query->the_post();
Viewing 9 replies - 1 through 9 (of 9 total)
  • esmi

    @esmi

    Forum Moderator

    I’m not sure what the problem is. You said that you only want 1 random post, yes. Isn’t that what you are getting?

    Yes it is, but it is only getting the most recent post. I need it to randomly display from the most recent 20 posts

    esmi

    @esmi

    Forum Moderator

    You cannot have two orderby parameters like that. Try:

    $post_id = get_the_ID();
        $args = array(
          'orderby' => 'post_date rand',
          'showposts'=>1,
          'post__not_in' => array($post_id),
          'meta_query' => array(array('key' => '_thumbnail_id'))
        );

    http://codex.wordpress.org/Function_Reference/WP_Query#Order_.26_Orderby_Parameters

    It is functioning the same as I had it before now by displaying random posts from all posts, not the most recent 20. So now we just need it to grab posts from only the most recent 20. 😀

    esmi

    @esmi

    Forum Moderator

    So you want only 1 of the recent 20 posts displayed, yes? If so, you’ll need to amend the query to pull all 20 recent posts.

    $post_id = get_the_ID();
        $args = array(
          'orderby' => 'post_date rand',
          'posts_per_page'=> 20,
          'post__not_in' => array($post_id),
          'meta_query' => array(array('key' => '_thumbnail_id'))
        );

    Then grab a random post from the returned query object.

    No, thats not working either. Now what it is doing is displaying all 20 posts. I only need 1 post to randomly display out of the 20 most recent posts.

    esmi

    @esmi

    Forum Moderator

    Then grab a random post from the returned query object.

    I figured it out. I wrote a separate function calling the most recent posts using wp_get_recent_posts then just queried it out into randomly displaying 1. Thanks for your help.

    Care to share the code?

Viewing 9 replies - 1 through 9 (of 9 total)
  • The topic ‘[Resolved] Display only 1 random post from the most recent 20’ is closed to new replies.
Skip to toolbar