Beginner's Guide for WordPress - Start your WordPress Blog in minutes.
Choosing the Best
WordPress Hosting
How to Easily
Install WordPress
Recommended
WordPress Plugins
View all Guides

How to List Future “Upcoming” Posts in WordPress

Last updated on by
Elegant Themes
How to List Future “Upcoming” Posts in WordPress

One of the best feature that every beginner ought to know is the ability to schedule your posts in WordPress. But this feature can do more then letting you schedule your post to publish at a certain time, it can help you bring your readers back by telling them what to expect in a certain amount of hours. In this tutorial, we will show you how to generate user excitement by listing your future “upcoming” posts in WordPress.

First you need to schedule your posts for the future dates. Then open your sidebar.php or wherever you like to display the list of future posts, and paste the following code:

<?php query_posts('posts_per_page=10&post_status=future'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2><?php the_title(); ?></h2>
<span class="datetime"><?php the_time('j. F Y'); ?></span></p>
<?php endwhile;
else: ?><p>No future events scheduled.</p>
<?php endif; ?>

The code above is being sorted by the parameter post_status which in this case is “future”, but it can be draft, published and so on. There is also another parameter in this post that limits the number of posts being displayed, posts_per_page=10. You can change the number to however many schedule posts you want to show your users.


Editorial Staff at WPBeginner is a team of WordPress lovers led by Syed Balkhi. Page maintained by Syed Balkhi.

WPBeginner's Video Icon
Our HD-Quality tutorial videos for WordPress Beginners will teach you how to use WordPress to create and manage your own website in about an hour. Get started now »

Comments

  1. Karthik says:

    Thank you so much for the useful script

  2. Melroy van den Berg says:

    I should use this code instead (this will also ignore the sticky posts):

    ‘future’,
    ‘ignore_sticky_posts’ => true,
    ‘posts_per_page’ => 5,
    ‘order’ => ‘DESC’
    );
    $my_query = new WP_Query($args);
    if ($my_query->have_posts()) {
    while ($my_query->have_posts()) : $my_query->the_post();

    $do_not_duplicate = $post->ID; ?>

    Expected:

  3. FotoImago says:

    Excellent! Just what I needed. :D

  4. Adam says:

    Thank you so much for this tutorial. I am using the future/scheduled posts now to easily organize my postings and it makes visualizing everything a million times easier!

  5. WillDWhite says:

    Future posts don’t display in RSS feeds until after their “publish date”. Any way to workaround that so folks can subscribe to the feed and have it show all future posts too?

  6. TylerCollins says:

    Sorry for digging this up from the past, but is there a way that once the date comes up for the post to be published that it can stay there also?

  7. Dave says:

    This has some potential, but I’d like to use this to just show the next scheduled post. As it stands, if you limit it to just show one post, it shows the one scheduled to be published last. Any idea of how to get it to show the next one to be published?

  8. designfollow says:

    thank for this great post

  9. Mason Jones says:

    Thanks for posting that, I haven’t been able to read much about it. It would work great for my site!

    Mason Jones

  10. Nitin Reddy Katkam says:

    Hi!

    This sounds like a pretty interesting idea. I’m sure a lot of people would want you to make a sidebar widget out of this.

    BTW, which is the earliest version of WordPress in which these functions are available?

    -Nitin

    • Editorial Staff says:

      This should work in any version above 2.5 to be on the safe side. But we strongly recommend that you use the latest version of WordPress.

Add a Comment

We're glad you have chosen to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and all links are nofollow. Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.