イベント一覧は、今日以降へ絞って開催日順に並べます
ACF Date Pickerの開催日をYmdで保存している場合は、meta_queryの>=とNUMERICで今日以降へ絞ります。meta_keyをevent_date、orderbyをmeta_value_num、orderをASCにすると、開催日が近い順に並びます。
WP Query Builderでは固定日付で取得結果を確認し、実装時にcurrent_time( ‘Ymd’ )へ置き換えます。過去の開催日を一覧から外すときに使える構成です。開催日が未入力の投稿を含めるかも先に決めましょう。
最初に投稿タイプと開催日の保存形式を決める
この記事ではカスタム投稿タイプworksに、ACF Date Pickerのフィールドevent_dateを用意した例を使います。対象サイトではeventなど、実際に登録している投稿タイプへ置き換えてください。
| 確認項目 | この記事の例 | 確認する場所 |
|---|---|---|
| 投稿タイプ | works | 投稿タイプ登録コードまたは管理画面URL |
| フィールド名 | event_date | ACFのフィールド名 |
| 保存形式 | Ymdの8桁 | get_post_metaで実際の保存値を確認 |
| 当日の扱い | 含める | compareに>=を使う |
| 未入力 | 一覧に含めない | 運用ルールと0件表示を決める |
ACF Date Pickerは表示形式や戻り値形式を変更できますが、データベース上はYmd形式で保存されます。画面に「2026年9月14日」と表示されていても、比較する値は20260914です。
保存形式とmeta_queryの関係を先に詳しく確認したい場合は、次の記事で管理画面の値と取得結果を照らし合わせてから、この完成例へ戻ってください。
ACF日付の保存値を確認するACFの日付フィールドをWP_Queryで絞り込む方法Ymd形式、NUMERIC比較、BETWEENの境界を小さな検証データで確認する記事です。
記事を読むWP Query Builderで今日以降と開催日順を入力する
公開中のWP Query Builderで「詳細設定(全項目)」を選び、基本設定、並び順、Meta Queryを入力します。動的な「今日」は毎日変わるため、最初は確認時点の日付である2026年9月14日を、20260914という固定値で入力します。
| 入力欄 | 値 | 意味 |
|---|---|---|
| 投稿タイプ | custom / works | カスタム投稿worksを対象にする |
| 公開状態 | publish | 公開済みだけにする |
| 取得件数 | 6 | 最大6件を返す |
| 並び方向 / order | ASC | 小さい開催日から並べる |
| 並べ替えの基準 / orderby | meta_value_num | event_dateを数値順に扱う |
| キー / key | event_date | 開催日の保存フィールド |
| 値 / value | 20260914 | 2026年9月14日を基準日にする |
| 比較方法 / compare | >= | 基準日を含めて未来を残す |
| 値の型 / type | NUMERIC | Ymdを数値として比較する |
自動高速化はOFFにし、この記事で選んだ条件だけがコードへ出る状態にしました。orderbyへmeta_value_numを選ぶと、WP Query Builderは最初のMeta Queryのキーをmeta_keyにも反映します。

2026年9月14日を表す20260914で期待する投稿を確認してから、テンプレート側で今日の日付へ置き換えます。
次は、WP Query Builderがこの画面で生成したコードです。入力値、配列の順序、書式を変更せずに掲載しています。
引数や処理の一部分だけを示した例です。このまま単独で貼らず、テンプレート内のWP_Queryとループへ組み込んでください。
$args = array( 'post_type' => 'works', 'post_status' => 'publish', 'posts_per_page' => 6, 'order' => 'ASC', 'orderby' => 'meta_value_num', 'meta_query' => array( array( 'key' => 'event_date', 'compare' => '>=', 'type' => 'NUMERIC', 'value' => 20260914 ) ), 'meta_key' => 'event_date');子テーマへイベント一覧を置き、固定ページから呼び出す
クラシックテーマの子テーマにtemplate-parts/upcoming-events.phpを作ります。WP Query Builderが生成したコードのうち、valueだけを$todayへ置き換え、表示ループを加えます。
<?php$today = (int) current_time( 'Ymd' ); $args = array( 'post_type' => 'works', 'post_status' => 'publish', 'posts_per_page' => 6, 'order' => 'ASC', 'orderby' => 'meta_value_num', 'meta_query' => array( array( 'key' => 'event_date', 'compare' => '>=', 'type' => 'NUMERIC', 'value' => $today ) ), 'meta_key' => 'event_date'); $event_query = new WP_Query( $args ); if ( $event_query->have_posts() ) : ?> <section aria-labelledby="upcoming-events-title"> <h2 id="upcoming-events-title">開催予定のイベント</h2> <ul> <?php while ( $event_query->have_posts() ) : ?> <?php $event_query->the_post(); $event_date = (string) get_post_meta( get_the_ID(), 'event_date', true ); $date = DateTimeImmutable::createFromFormat( '!Ymd', $event_date ); ?> <li> <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php if ( $date instanceof DateTimeImmutable ) : ?> <time datetime="<?php echo esc_attr( $date->format( 'Y-m-d' ) ); ?>"> <?php echo esc_html( $date->format( 'Y年n月j日' ) ); ?> </time> <?php endif; ?> </li> <?php endwhile; ?> </ul> </section> <?phpelse : echo '<p>現在、開催予定のイベントはありません。</p>';endif; wp_reset_postdata();current_time( ‘Ymd’ )は、WordPressの「設定 → 一般」で選んだタイムゾーンを基準にします。PHPサーバーの既定タイムゾーンへ直接依存させないことで、日付の切り替わりをサイト設定と揃えます。
page-events.phpの本文後から1回呼び出す
イベント一覧を表示する固定ページ用にpage-events.phpを子テーマへ作り、メインループ内でthe_content()の後からテンプレートパーツを呼びます。
引数や処理の一部分だけを示した例です。このまま単独で貼らず、テンプレート内のWP_Queryとループへ組み込んでください。
<?phpwhile ( have_posts() ) : the_post(); the_content(); get_template_part( 'template-parts/upcoming-events' );endwhile;?>テーマのfunctions.phpへHTMLごと直書きすると、表示位置と取得処理が追いにくくなります。再利用する取得条件は関数やプラグインへまとめても構いませんが、表示マークアップはテンプレート側に残すと役割を分けやすくなります。
子テーマのどのファイルを編集するか判断できない場合は、先に次の記事でpage.php、テンプレートパーツ、functions.phpの役割を確認してください。設置場所を決めてから戻ると、取得処理を同じページで二重に実行するミスも避けやすくなります。
コードの設置場所を確認するWP_Queryはどこに書く?front-page.php・固定ページ・functions.phpの使い分け表示したい場所とテーマの種類から、編集するファイルと呼び出し方を選ぶための記事です。
記事を読む開催日が毎日変わる一覧は、本番へ置く前にローカルまたはステージングで日付境界を確認します。検証環境を用意する場合は、バックアップと利用できるPHPバージョンも公式情報で確かめてください。
当日・未来・前日・未入力の取得結果を確認する
分離したWordPress環境へ、当日、未来2件、前日、開催日未入力の5投稿を用意しました。サイトのタイムゾーンはAsia/Tokyo、基準日は20260914です。
WP Query Builderが生成した条件を変更せずに使うと、ID92、93、94の3件がevent_dateの昇順で返ります。投稿の公開日順ではなく、開催日が近い順です。

event_dateが20260914以上の投稿を、meta_value_numの昇順で表示した結果です。
compareを>へ変えると当日のID92が外れ、ID93と94の2件になります。前日のID95と、event_dateを保存していないID96は、どちらの一覧にも入りません。

同じ5投稿でcompareだけを切り替えたときの、対象IDの違いです。
カテゴリーや地域も加える場合は条件を1つずつ足す
「今日以降で、東京開催だけ」のような一覧では、開催日のMeta QueryにTax Queryや別のMeta Queryを追加します。最初から複数条件を入れると0件の原因が分からないため、開催日だけで3件が返ることを確認してから地域条件を足します。
同じ種類の条件どうしをつなぐ場合と、異なる種類の条件を組み合わせる場合とでは、AND・ORの書き方が変わります。地域や公開対象を追加する前に、次の記事でrelationを置く場所と、異なる種類の条件をまたぐORの制約を確認してください。
複数条件へ広げるWP_Queryで複数条件を組み合わせる方法開催日条件へ分類や別のカスタムフィールドを足すときの、AND・ORと確認順を整理します。
記事を読む表示されないときは保存値・型・時刻を順に確認する
結果が合わないときは、条件を増やす前に保存値、並び順、日付境界の順で切り分けます。
| 症状 | 最初に確認すること | 対処 |
|---|---|---|
| 未来のイベントが出ない | event_dateの保存値 | 投稿IDを指定してget_post_metaで8桁か確認 |
| 順番が合わない | meta_keyとorderby | event_dateとmeta_value_numを組み合わせる |
| 当日が消える | compareが>になっている | 当日を含めるなら>= |
| 深夜に切り替わりがずれる | 現在日付の基準 | current_timeとWordPressタイムゾーンを使う |
| 日付未入力も出したい | 要件が別 | NOT EXISTSを含むORと並び順を別途設計 |
同じ開催日が複数ある場合、このコードだけではその中の順番を固定しません。必要なら、まず開催日順を確認したあと、orderbyへIDなどの二次条件を手動で加えます。
イベント条件を詳細設定で組み立てる
カスタム投稿タイプ、Meta Query、meta_value_numの並び順を画面で確認できます。固定日付で取得結果を確認してから、表示用ファイルでWordPressの現在日付へ置き換えてください。
WP Query Builderのどの欄をどの順番で操作するかを詳しく確認したい場合は、詳細設定の記事でTax・Meta・Date Queryの入力手順を画面ごと追えます。この記事の完成例へ条件を足す前の操作ガイドとして読んでください。
詳細設定の操作を確認するWP Query Builderの詳細設定の使い方複雑な条件を入力し、生成コードをファイルへ置いて実際の取得結果を確かめるまでの手順です。
記事を読む公開前は日付境界と0件表示まで確認する
毎日対象が変わるため、正常系だけでなく日付が切り替わる境界も小さなデータで確認します。
イベント一覧の確認順
- 1WordPressのタイムゾーンを確認する
- 2前日・当日・翌日・未来・未入力の投稿を用意する
- 3固定日付で期待する投稿IDと順番を確認する
- 4compareを>=と>で切り替えて当日の扱いを確認する
- 5current_timeの動的日付へ置き換える
- 6対象が0件のとき案内文が表示されるか確認する
- 7独自ループ後に元ページの本文へ戻るか確認する
イベント一覧の最終チェック
- 投稿タイプとevent_dateを実際の名前へ合わせた
- Ymdの保存値にNUMERIC比較を使った
- 当日を含めるかcompareで明示した
- meta_keyとmeta_value_numで開催日順にした
- 現在日付をWordPressのタイムゾーンで作った
- 日付未入力の扱いを決めた
- 表示ファイルと呼び出し位置を記録した
- 0件案内とwp_reset_postdataを入れた
イベント日付とWP_Queryの公式資料を確認する
保存形式はACF、絞り込みと並び順はWordPressの公式資料で確認します。戻り値形式だけを見て比較値を決めないようにしてください。
イベント一覧のよくある質問
実装時に迷いやすい当日、未入力、終了日の扱いを短く整理します。
この記事の検証情報
検証環境
- WordPress
- 7.1.4
- PHP
- 8.3.36
- テーマ
- wpq-media + DDEV
- 対象
- カスタム投稿 / taxonomy / meta_query
更新履歴
- 2026年10月1日 初回公開
この記事を活用する
あとで見返す・共有する
お気に入りに保存できます。役に立ったポイントは、いいねや共有で教えてください。


