Display Scheduled WordPress Posts with a Custom Shortcode

WordPress allows you to schedule posts for future publication. You can showcase these upcoming posts by creating a simple shortcode using WP_Query. This method lets you list future-dated posts dynamically across your site.

How to Create a Shortcode for Future Posts

Use this step-by-step guide to build the shortcode:

Step 1: Write the Function

Add this function to your theme’s functions.php file or a site-specific plugin:

function upcoming_posts_shortcode($atts) {
    $atts = shortcode_atts(array(
        'posts_per_page' => -1,
        'order' => 'ASC',
        'orderby' => 'date',
    ), $atts);

    $args = array(
        'post_status' => 'future',
        'posts_per_page' => $atts['posts_per_page'],
        'order' => $atts['order'],
        'orderby' => $atts['orderby'],
    );

    $query = new WP_Query($args);
    ob_start();

    if ($query->have_posts()) :
        while ($query->have_posts()) :
            $query->the_post();
            echo '<h4>' . get_the_title() . '</h4>';
            echo '<div>' . get_the_content() . '</div>';
        endwhile;
        wp_reset_postdata();
    else :
        echo '<p>No upcoming posts found.</p>';
    endif;

    return ob_get_clean();
}
add_shortcode('upcoming_posts', 'upcoming_posts_shortcode');
Step 2: Insert the Shortcode

You can now use [upcoming_posts] in any post or page. Here’s the basic shortcode:

[upcoming_posts]

Customize it with optional attributes:

  • posts_per_page: How many future posts to show.
  • order: Display order (ASC or DESC).
  • orderby: Sort by field (e.g., date).
Sample with Attributes
[upcoming_posts posts_per_page="3" order="ASC" orderby="date"]

Best Practices

  • Apply styling via CSS for a polished look.
  • Limit the output to keep it clean.
  • Enable cache plugins to optimize speed.

Further Reading

This feature is great for promoting scheduled content like announcements, events, or upcoming posts.

Leave a Comment

Your email address will not be published. Required fields are marked *

Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.