私の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回目のループを作成する必要がありますか、それともスケジュールされた投稿を表示するようにこの単一のループを変更することはできますか?もしそうなら、どうですか?ありがとうございました。
物事を単純にしてください - アーカイブテンプレートはそのままにして、これをあなたの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は、あなたが任意の日付のアーカイブを閲覧しても通常通りに動作します。