Показывать запланированные публикации на странице архива


Я бы хотел, чтобы мой archive.php ежедневный просмотр страницы (is_day) для отображения запланированных сообщений (post_status = будущее). Например, если я пойду в mysite.com/2011/05/20 Я бы увидел все сообщения, которые должны появиться 20 мая.

Цикл страницы архива начинается с:

if ( have_posts() )
the_post();

И заканчивается:

rewind_posts();
get_template_part( 'loop', 'archive' );

Нужно ли мне сделать второй цикл или я могу изменить этот единственный цикл, чтобы показывать запланированные публикации? Если да, то как? Спасибо.

Author: Ryan, 2011-05-09

1 answers

Все просто - оставьте свои шаблоны архива в покое и поместите это в свой functions.php;

add_action( 'pre_get_posts', function ( $wp_query ) {
    global $wp_post_statuses;

    if (
        ! empty( $wp_post_statuses['future'] ) &&
        ! is_admin() &&
        $wp_query->is_main_query() && (
            $wp_query->is_date() ||
            $wp_query->is_single()
        )
    ) {
        $wp_post_statuses['future']->public = true;
    }
});

По сути, это говорит;

Если мы находимся в архиве дат или просматриваем одно сообщение, сделайте будущие сообщения общедоступными.

В результате WordPress ведет себя нормально, когда вы просматриваете архивы за любую заданную дату, за исключением того, что теперь он также включает сообщения "из будущего"!.

 7
Author: TheDeadMedic, 2016-11-08 12:19:51