Make WordPress Core

Ticket #27088: show-scheduled-posts.php

File show-scheduled-posts.php, 763 bytes (added by danielbachhuber, 11 years ago)

Show scheduled posts on view

Line 
1<?php
2/**
3 * Filter `the_posts` to allow viewing of scheduled posts
4 *
5 * It can't be done via a capability check because core requires
6 * user to be logged in for non-public statuses
7 *
8 * @see https://core.trac.wordpress.org/browser/tags/3.8.1/src/wp-includes/query.php#L2972
9 */
10function dbx_filter_the_posts_show_future( $posts, &$q ) {
11        global $wpdb;
12
13        if ( ! $q->is_main_query() || ! $q->is_single || empty( $q->request ) || ! empty( $posts ) ) {
14                return $posts;
15        }
16
17        $post = $wpdb->get_row( $q->request );
18        if ( empty( $post ) ) {
19                return $posts;
20        }
21
22        $post = get_post( $post->ID );
23        if ( 'future' === $post->post_status ) {
24                return array( $post );
25        } else {
26                return $posts;
27        }
28
29}
30add_filter( 'the_posts', 'dbx_filter_the_posts_show_future', 10, 2 );