MTS Simple Bookingの有料版 で最終予約時間が終わったら「○」から「-」表示に自動切替する方法
⚠ 対応プラグインについての重要な注意
※本記事は MTS Simple Bookingの有料版 専用 です。
MTS Simple Booking-Cの無料版 には対応していません。
※本記事は実運用で詰まった方向けの技術メモです。実際の環境やカスタマイズ状況によっては、そのまま適用できない場合があります。
ここから先は環境依存になります。個別条件が絡む場合は、無理に触らず専門対応を検討してください。
1 この記事で解決できること
WordPressの予約プラグイン MTS Simple Booking(有料版) を使用していると、次のような問題に遭遇することがあります。
- 当日の最終予約時間が過ぎているのに、カレンダーが「○(予約可能)」のまま表示されてしまう
本記事では、当日の最終予約枠がすべて終了した時点で、カレンダー表示を自動的に切り替える方法を解説します。
2 実現したい動作
当日分の予約枠がすべて終了したら、自動で次のように変更します。
○(予約可能) → -(受付終了)
- 管理画面での手動操作は不要
- 実際の受付状況と表示がズレない
- 利用者にとって直感的に分かるUI
3 修正対象ファイル
/wp-content/plugins/mts-simple-booking/mtssb-front.php
4 追加する場所
以下の既存コードがあります。
if (empty($schedule['open']) || $thetime < $this->calendar->todayTime) {
$mark = 'disable';
} elseif (!$timetableDay && !$this->controls['output_margin']) {
$mark = 'disable';
}
↑ この直下(日付判定より後・出力処理より前)に、次のコードを追加します。
5 追加するコード
// 最終予約時間以降は「○」から「-」に変更
// === 当日の最終受付時刻チェック ===
if (date_i18n('Ymd', $thetime) === date_i18n('Ymd', current_time('timestamp'))) {
// 当日のタイムテーブル(秒単位)
$times = $this->article['timetable'];
// 最終枠の開始秒
$lastStart = max($times);
// 枠の長さを自動算出(次の枠との差分)
sort($times);
$slotLength = 1800; // デフォルト30分
if (count($times) >= 2) {
$slotLength = $times[1] - $times[0];
}
// 最終受付時刻(開始 + 枠長)
$lastAcceptTime = $thetime + $lastStart + $slotLength;
// 現在時刻が最終受付時刻を過ぎていれば無効化
if (current_time('timestamp') >= $lastAcceptTime) {
$mark = 'disable';
}
}
6 コードの仕組みを解説
6.1 ① 当日かどうかを判定
if (date_i18n('Ymd', $thetime) === date_i18n('Ymd', current_time('timestamp')))
$thetime:その日の 00:00 の UNIX タイムcurrent_time('timestamp'):WordPress基準の現在時刻
「今日だけ」処理を行うための条件です。
6.2 ② タイムテーブルから最終枠を取得
$times = $this->article['timetable'];
$lastStart = max($times);
timetable には、開始時刻が秒で格納されています。
例:
- 09:00 → 32400
- 09:30 → 34200
max() を使うことで、当日の最終予約枠の開始時刻を取得します。
6.3 ③ 枠の長さを自動判定
$slotLength = 1800; // デフォルト30分
if (count($times) >= 2) {
$slotLength = $times[1] - $times[0];
}
- 30分・60分など、サイトごとの設定差に対応
- 最初の2枠の差分から 1枠の長さを自動算出
- データ不足時は安全に 30分
6.4 ④ 最終受付時刻を計算
$lastAcceptTime = $thetime + $lastStart + $slotLength;
計算内容は以下の通りです。
- 当日 00:00
- + 最終枠の開始秒
- + 枠の長さ
「この時刻を過ぎたら受付終了」という明確な基準点を作ります。
6.5 ⑤ 受付終了なら「-」表示に変更
if (current_time('timestamp') >= $lastAcceptTime) {
$mark = 'disable';
}
disable にすることで、カレンダー表示が 「-(受付終了)」 に切り替わります。
利用者にとって「もう予約できない」ことが直感的に分かるUIになります。
7 このカスタマイズのメリット
- 管理者が毎日手動で操作する必要なし
- 当日予約の誤操作・クレーム防止
- 実際の受付状況と表示がズレない
- MTS Simple Booking(有料版)の仕様を壊さない安全な実装
8 注意点
- 本実装は 等間隔のタイムテーブル を前提としています
- 不等間隔の場合は、最終枠の終了時刻を個別に算出してください
- プラグイン本体を編集しているためアップデート時は再対応が必要です
9 まとめ
MTS Simple Booking(有料版)は柔軟ですが、「当日の最終受付後の表示制御」は標準では少し物足りません。
今回のように、
- タイムテーブル
- 枠の長さ
- WordPressの時刻管理
を正しく扱うことで、実運用に耐える予約カレンダー表示に改善できます。
同じ悩みを持っている方の参考になれば幸いです。
⚠ 対応プラグインについての重要な注意
※本記事は MTS Simple Bookingの有料版 の実装解説です。
MTS Simple Booking-Cの無料版 には対応していません。

