SEARCH

CATEGORY

[WordPress] カスタムフィールドテンプレートの「申込期限」で受付中・受付終了を自動切り替えする方法

WordPressでイベントやセミナーの案内ページを作成する際、
・申込期限までは申込フォームを表示する
・期限を過ぎたら「受付終了」へ切り替える
といった運用をしたいケースがあります。

このような場合は、カスタムフィールドに設定した日付を基準に表示内容を切り替えることで、更新作業を自動化できます。

この記事では、プラグイン「Custom Field Template(カスタムフィールドテンプレート)」で作成した「申込期限」フィールドを利用し、
・期限前 → 「受付中」
・期限後 → 「受付終了」
を自動で表示する方法を解説します。

カスタムフィールドテンプレートで申込期限を作成する

まずは、カスタムフィールドテンプレートで「申込期限」を作成します。

今回は、日付入力用のフィールドとして設定します。

設定例は以下のとおりです。

[申込期限]
type = textfield
size = 10
date = true
dateFormat = yyyy-mm-dd
startDate = '2026-04-01'
dateFirstDayOfWeek = 1
設定項目内容
date = true日付ピッカーを有効化
dateFormat保存形式を yyyy-mm-dd に指定
startDate選択できるカレンダーの開始日
dateFirstDayOfWeek月曜日始まり

申込期限で受付状況を切り替えるコード

次に、single-event.php などのテンプレートファイルでカスタムフィールドの日付を取得し、現在日と比較します。
申込期限内であれば「受付中」、期限を過ぎた場合は「受付終了」を表示します。

コードの解説

今日の日付を取得

$today_timestamp = strtotime( current_time('Y-m-d') );

WordPressで設定されているタイムゾーン基準の日付を取得しています。

カスタムフィールドの値を取得

$deadline = get_post_meta(get_the_ID(), '申込期限', true);

「申込期限」に入力された日付を取得します。

UNIXタイムスタンプへ変換

$deadline_timestamp = $deadline ? strtotime($deadline) : null;

日付同士を比較しやすくするため、タイムスタンプへ変換しています。

なお、null は「値が存在しない状態」を表します。
ここでは、申込期限が未入力の場合に null を代入しています。

申込期限を過ぎたら受付終了を表示する仕組み

条件分岐の中心となるのは以下のコードです。

<?php if (!$deadline_timestamp || $today_timestamp <= $deadline_timestamp) : ?>

判定内容は次のとおりです。

状態結果
今日 < 期限日受付中
今日 = 期限日受付中
今日 > 期限日受付終了
申込期限が未入力受付中

たとえば、
・申込期限:2026-06-16
・本日:2026-06-16
の場合も、受付中として扱われます。

期限日当日も受付したい場合

$today_timestamp <= $deadline_timestamp

期限日当日に受付終了へ切り替えたい場合

$today_timestamp < $deadline_timestamp

とします。

申込期限が未入力の場合の処理

上記コードでは、申込期限が未入力の場合も「受付中」が表示されます。

!$deadline_timestamp

もし、申込期限が未入力の場合は「受付終了」を表示したい場合は、以下のように変更します。

<?php if ($deadline_timestamp && $today_timestamp <= $deadline_timestamp) : ?>

まとめ

  • カスタムフィールドテンプレートで申込期限を管理できる
  • get_post_meta() で日付を取得する
  • strtotime() でタイムスタンプへ変換して比較する
  • 期限日当日まで受付する場合は <= を使用する
  • 未入力時も受付中にしたい場合は !$deadline_timestamp を追加する
  • イベントページやセミナー申込ページの運用自動化に便利

この仕組みを利用すれば、毎回テンプレートを書き換えることなく、カスタムフィールドの日付だけで「受付中」「受付終了」の表示を自動で切り替えできます。