前提
WordPressでイベント情報を載せています。
イベント一覧ページに表示する際、
ACFのラジオボックスで「参加募集中」「残りわずか」「満員御礼」を配置
下記のコードでイベント情報を拾っていました。
php
1$args = array( 2 'post_type' => 'events', 3 'meta_key' => 'カスタムフィールド', 4 'meta_value' => array('参加募集中', '残りわずか'), 5 'post_status' => 'publish', 6 ); 7 $query = new WP_Query($args);
以前までは手作業で「満員御礼」にチェックを入れて、イベント情報には非表示になるようにしていたのですが、ここを自動で行えるよう修正したいと思ってデイトピッカーを使用して日付でソートするようにコードを修正しました。
php
1$today = date('Ymd'); 2 $args = array( 3 'post_type' => 'events', 4 'post_status' => 'publish', 5 'meta_query' => array( 6 'relation' => 'AND', 7 array( 8 'key' => 'カスタムフィールドキー', 9 'value' => array('参加募集中', '残りわずか'), 10 ), 11 array( 12 'key' => '終了日設定', // ACFで所得する公開日 13 'value' => $today, 14 'compare' => '>=', // value(今日)とkey(公開日)を比較して未来の場合のみ表示 15 ), 16 ), 17 'tax_query' => array( 18 'relation' => 'AND', 19 array( 20 'taxonomy' => 'event-category', 21 'field' => 'slug', 22 'terms' => 'information' 23 ) 24 ) 25 ); 26 $query = new WP_Query($args);
ただAND検索にすると日付を指定したくないもの(常時開催)や、昔のイベントは日付登録していなくて、日付登録していないものも非表示になってしまいます。
これをOR検索にすると日付が過ぎていても「募集中」「残りわずか」に設定されているものは表示されてしまうので、満員御礼にチェックをつける手間が発生します。
実現したいこと
昔のイベントや、常時開催しているイベントには日付登録作業をしないで下記を実現したいです。
・終了日を過ぎたものは表示しない
・「満員御礼」になっているものも表示しない
・(出来るならば)掲載終了日をACFのデイトピッカーなどで設定すると、終了日を過ぎたとき自動的に「満員御礼」にラジオボタンが移動する
ということを行いたいです。
取得した投稿数を表示することも下記で行っているので、一旦全て取得して日付で比較して非表示ということもできない(というかしたくない)です。
new WP_Query($args)
発生している問題・エラーメッセージ
どのように記述すれば良いかわからない
補足情報(FW/ツールのバージョンなど)
WordPress 5.4.10
Advanced Custom Fields PRO バージョン 5.7.9
あなたの回答
tips
プレビュー