カスタムフィールドで日付を指定し、過去・未来で投稿を分けたい
-
カスタムフィールドに入力した日付と現在の日時を比較し、未来・過去で投稿(カスタム投稿)を振り分ける固定ページを作成しています。
【カスタムフィールド】(プラグイン:Custom Field Template使用)
[limit] type = textfield label = 期限 date = true dateFirstDayOfWeek = 0 dateFormat = yyyy/mm/dd startDate = (new Date()).asString()
【完成形】
<h1>未来</h1> <dl> <dd>投稿1(カスタムフィールドの日付が未来)</dd> <dd>投稿2(カスタムフィールドの日付が未来)</dd> </dl> <h1>過去</h1> <dl> <dd>投稿3(カスタムフィールドの日付が過去)</dd> <dd>投稿4(カスタムフィールドの日付が過去)</dd> </dl>
【問題点】以下のコードを書いてみましたが、複数ある投稿(カスタム投稿)の1件分しか表示できません。
※上の完成形例だと「投稿1」のみ表示され、他は「投稿なし」になる<h1>未来</h1> <?php $current_date = date_i18n( 'Y/m/d' ); $args = array( 'tax_query' => array( array( 'taxonomy' => 'タクソノミー', 'field' => 'slug', 'terms' => array( '表示したいターム' ) ), ), 'post_type' => 'カスタム投稿名', 'meta_query' => array( array( 'key' => 'limit', 'value' => $current_date, 'compare' => '>=', 'type' => 'DATE' ) ) ); $output = ''; query_posts( $args ); if ( have_posts() ) : $output .= '<dl>'; while ( have_posts() ) : the_post(); $output .= '<dd>' . get_the_title() . '</dd>'; endwhile; $output .= '</dl>'; echo $output; wp_reset_query(); else : // 投稿がない場合の処理 echo '<p>投稿なし</p>'; endif; ?> </section><!-- /section -->
未来が完成すれば、過去分は「’compare’ => ‘<‘,」に書き換えるだけでできると思います。
1件分の投稿しか取得できないのはループに問題があるのでしょうか。足りない情報などございましたら、ご指摘いただけると助かります。
2件の返信を表示中 - 1 - 2件目 (全2件中)
2件の返信を表示中 - 1 - 2件目 (全2件中)
- トピック「カスタムフィールドで日付を指定し、過去・未来で投稿を分けたい」には新たに返信することはできません。