web-dev-qa-db-fra.com

Afficher les messages programmés dans la page d'archive

J'aimerais que la vue quotidienne de ma page archive.php (is_day) affiche les messages programmés (post_status = future). Par exemple, si je vais sur mysite.com/2011/05/20, je verrais tous les messages qui doivent paraître le 20 mai.

La boucle de la page d'archive commence par:

if ( have_posts() )
the_post();

et se termine par:

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

Dois-je créer une deuxième boucle ou puis-je modifier cette boucle simple pour afficher les publications programmées? Si c'est le cas, comment? Je vous remercie.

1
Ryan

Gardez les choses simples - laissez vos modèles d'archive et placez-les dans votre 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;
    }
});

Essentiellement, cela dit:

Si nous sommes sur une archive de date ou si nous regardons un seul message, rendez les prochains messages visibles au public.

En conséquence, WordPress se comporte normalement lorsque vous affichez des archives pour une date donnée, sauf que maintenant, il inclut également les messages "du futur" !.

7
TheDeadMedic