前提・実現したいこと
WordPressのカスタム投稿タイプでイベント予定一覧ページを作りました。
イベントの予定があるときはイベントの内容を投稿の数だけ表示。
イベントの予定がない場合は「現在、イベントの予定はありません。」の文言を
表示したいと思っています。
発生している問題・エラーメッセージ
Advanced custom fieldsのデイトピッカーでイベント開催日を入力して、それを判定して分岐しようとしました。
イベント予定がある場合(今日以降開催のイベントの投稿がある場合)は正しく表示されるのですが、
イベント予定がない場合(昨日以前開催のイベントの投稿しかない場合)に「現在、イベントの予定はありません。」の文言が表示されません。
該当のソースコード
<div id="test_box" class="box"> <div class="part event_part"> <ul> <?php $args = array( 'numberposts' => -1, 'post_type' => 'event' ); $posts = get_posts( $args ); if( $posts ) : foreach( $posts as $post ) : setup_postdata( $post ); $today = date("Y.m.d"); $event_date = get_field('event_date'); if($today <= $event_date):?> <li> <p><?php the_field('event_date'); ?></p> <p><?php the_title(); ?></p> </li> <?php endif; ?> <?php endforeach; ?> <?php elseif($today > $event_date):?> <li> <p>現在イベントの予定はありません。</p> </li> <?php endif;wp_reset_postdata();?> </ul> </div> </div>
試したこと
イベント情報の投稿をすべて削除すると「現在イベントの予定はありません。」の文言は表示されました。
ですが、過去のイベントは過去のイベント情報として別で表示させたいので削除したくありません。
補足情報
$today = date("Y.m.d");
で「今日」の日付を取得。
$event_date = get_field('event_date');
でイベントの日付を取得しています。
アドバイスよろしくお願いします。
追記
以下のように修正してみたのですが、過去、未来のイベント関係なく、一番新しい投稿以外が表示されるという
謎の挙動です。
どこか間違っているのでしょうか?
<div id="test_box" class="box"> <div class="part event_part"> <ul> <?php $today = date("Y.m.d"); $args = array ( 'numberposts' => -1, 'post_type' => 'event', 'meta_query' => array( array( 'key' => 'event_date', 'compare' => '>=', 'value' => $today, ) ), ); $posts = get_posts( $args ); if( $posts ) : foreach( $posts as $post ) : setup_postdata( $post ); ?> <li> <p><?php the_field('event_date'); ?></p> <p><?php the_title(); ?></p> </li> <?php endforeach; ?> <?php else:?> <li> <p>現在、イベントの予定はありません。</p> </li> <?php endif;wp_reset_postdata();?> </ul> </div> </div>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/11 01:56