本稿は最新版Ver.1.36.0において動作確認しております。

予約フォームの連絡事項欄に、予約者から入退場予定時間を知らせてもらう入力項目があります。この記事は、この予定時間の選択ボックス入力範囲をメッセージフィルターを利用して変更する方法を紹介します。

時の選択

次の図は、時間の選択範囲を8時〜20時に設定した例です。

8時から20時

以下は利用するメッセージフィルターのプログラム例です。

add_filter('mtssb_wptime_hour_range', 'inout_hour_range', 10, 2);
function inout_hour_range($param, $keyname) {
if (in_array($keyname, ['in', 'out'])) {
$param['min'] = 8;
$param['max'] = 20;
$param['step'] = 1;
}
return $param;
}

関数に2つの引数が渡されます。引数の値は次の通りです。

  • $param
    配列で選択ボックスの開始時間「min」、終了時間「max」、間隔「step」が渡されます。デフォルトは「[‘min’ => 0, ‘max’ => 23, ‘step’ => 1」です。
  • $keyname
    「’in’」が渡されると「入場時間」の設定、「’out’」が渡されると「退場時間」の設定です。

メッセージフィルター関数でそのときの時間範囲と間隔の情報を戻します。

上記の例では、入退場時間の設定を同じにしましたが、in、out 別々の範囲で設定することも可能です。

分の選択

次の図は、分の選択を15分間隔に設定した例です。

15分間隔の選択

以下は利用したメッセージフィルターの例です。引数と戻す値は時間の選択とほとんど同様で、60分内です。

add_filter('mtssb_wptime_minute_range', 'inout_minute_range', 10, 2);
function inout_minute_range($param, $keyname) {
if (in_array($keyname, ['in', 'out'])) {
$param['min'] = 0;
$param['max'] = 59;
$param['step'] = 15;
}
return $param;
}

時間選択と同様、入退場別々に設定する事も可能です。

注意)この機能はPHPプログラムを利用するため、ソースにスペルミスなどエラーがあると画面が白く表示されたり、エラーメッセージが出ることがあります。バックアップの用意をお忘れなく。

メッセージフィルターの説明は次のページにあります。

▶ メッセージフィルター