現在、1 日に 1 つの投稿を表示し、オマージュに表示するため、1 つの投稿のみを表示するページがあります。
1 日に複数の投稿を行うことにしましたが、ホームページには当日の投稿のみを表示したいだけです。
これを達成するためにループ内で何を変更できますか?
参考までに、私のサイトはhttp://thatshitsawesome.comです。
現在、1 日に 1 つの投稿を表示し、オマージュに表示するため、1 つの投稿のみを表示するページがあります。
1 日に複数の投稿を行うことにしましたが、ホームページには当日の投稿のみを表示したいだけです。
これを達成するためにループ内で何を変更できますか?
参考までに、私のサイトはhttp://thatshitsawesome.comです。
まず、最大で表示される投稿の数を増やす必要があります。クエリごとに1つに制限することができたので、これを行う方法をすでに知っていると思います。完了するにposts_per_page
は、クエリ引数の条件を使用するか、デフォルト値を使用する場合は管理パネルの設定で設定された「ブログページが最大で表示される」値を使用して変更できます。
投稿を現在の日に制限するには、 WP_Queryリファレンスで定義されている特定のTimeパラメータを使用します。との条件が必要です。year
monthnum
day
例:
<?php
// Limit query posts to the current day
$args = array(
'year' => (int) date( 'Y' ),
'monthnum' => (int) date( 'n' ),
'day' => (int) date( 'j' ),
);
$query = new WP_Query( $args );
// The Loop
while ( $query->have_posts() ) :
$query->the_post();
// ...
endwhile;
?>
明示的なクエリを使用しておらず、内部 WP クエリに依存している場合、内部クエリを変更する一般的な方法はpre_get_posts
アクションを使用することです。以下の関数をfunctions.phpファイルに追加して、当日の投稿のみをフロントページにのみ表示します。
例:
<?php
function limit_posts_to_current_day( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'year', (int) date( 'Y' ) );
$query->set( 'monthnum', (int) date( 'n' ) );
$query->set( 'day', (int) date( 'j' ) );
}
}
add_action( 'pre_get_posts', 'limit_posts_to_current_day' );
?>