WordPressで一覧表示をする時、例えば現在から1週間以内、1か月以内、1年以内…など一定期間内のものだけ表示させたいということがあるかと思います。
そんな時はWP_Queryの引数内の『date_query』を使用してうまく表示できるようにします。
投稿の一覧表示に『date_query』を使う
まずは通常の投稿のループを記述して、その中に『date_query』を追加していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => 10, 'date_query' => array( array( 'before' => 'now', 'after' => '1 month ago', 'inclusive' => true, // その日を含めるかどうか ) ), ); $my_query = new WP_Query( $args ); if ( $my_query->have_posts() ): while ( $my_query->have_posts() ): $my_query->the_post(); ?> <div class="postArea"> <h1><?php the_title(); ?></h1> <?php the_content(); ?> </div> <?php endwhile;else: ?> <p>現在記事はありません</p> <?php endif; ?> <?php wp_reset_postdata(); ?> |
今回は現在から、という指定なのでbeforeについてはnowを指定しています。
afterについては1か月前~現在分の記事を表示したいので『1 month ago』と記述しました。
例えば1週間だったら『1 week ago』
1年間だったら『1 year ago』という風に記述していきます。
beforeもafterもこれをベースに自由に変えていろいろ試してみても面白いと思います。
その他日付パラメータについてはこちらをご確認ください。
『記事がない場合の記述』もしておかないと場合によってはただの空白になってしまうので注意が必要です。