web-dev-qa-db-ja.com

アーカイブページに予定の投稿を表示する

私のarchive.phpページの日々のビュー(is_day)に予定されている投稿を表示させたい(post_status = future)。たとえば、mysite.com/2011/05/20にアクセスすると、5月20日に予定されているすべての投稿が表示されます。

アーカイブページのループは次のように始まります。

if ( have_posts() )
the_post();

そしてで終わる:

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

2回目のループを作成する必要がありますか、それともスケジュールされた投稿を表示するようにこの単一のループを変更することはできますか?もしそうなら、どうですか?ありがとうございました。

1
Ryan

物事を単純にしてください - アーカイブテンプレートはそのままにして、これをあなたの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
TheDeadMedic