メッセージフィルター

MTS Simple Booking の予約フォームでプログラムから出力される項目名に関するメッセージを、WordPressのadd_filter()を利用して書き換える事ができます。

次の予約フォームはビジネス版のものですが、オプション選択以外は無償ダウンロード版と同様です。それぞれの予約システムに合わせて、入力時に分かりやすい項目名を表示するようにすると良いでしょう。

予約フォーム

予約フォームのメッセージフィルターadd_filter()の使い方は、WordPressのCodexに解説があります。

オリジナル:Function Reference/add filter
日本語:関数リファレンス/add filter

予約フォームで入力項目のタイトルを書き換えたい場合、右の入力フォームを参考にして下さい。以下、項目の一覧です。

  • ご予約:booking_form_number_title
  • 予約日時:booking_form_date
  • 人数ラベル:booking_form_count_label
  • オプションご注文:booking_form_option_title
  • ご注文の場合は個数を入力して下さい:booking_form_option_message
  • お客様ご連絡先:booking_form_client_title
  • ※の項目は必須です:booking_form_client_message
  • 会社名:booking_form_company
  • お名前:booking_form_name
  • フリガナ:booking_form_furigana
  • E-Mail:booking_form_email
  • E-Mail(確認用):booking_form_email2
  • 郵便番号:booking_form_postcode
  • 住所:booking_form_address
  • 電話番号:booking_form_tel
  • ご連絡事項:booking_form_message_title
  • 予約確認ボタン:booking_form_send_button

項目の書き換え方法は、利用するテーマの「functions.php」ファイルにフィルターの記述をするのが簡単です。右のフォームは次のようなフィルターのフックを、functions.phpファイルに記述してます。

function form_option_title($title, $output) {
    if ($output === 'input' || $output === 'confirm') {
        return 'オプションご注文';
    } elseif ($output === 'mail') {
        return '[オプション注文]';
    }
    return $title;
}
add_filter('booking_form_option_title', 'form_option_title', 10, 2);

function form_option_message($message) {
	return '設備を利用する場合は「1」と入力して下さい。お弁当は必要数を入力して下さい。';
}
add_filter('booking_form_option_message', 'form_option_message');

function form_date($booking, $booking_time) {
	return date_i18n('Y年n月j日', $booking_time);
}
add_filter('booking_form_date', 'form_date', 10, 2);

function form_company($company) {
	return 'グループ名称';
}
add_filter('booking_form_company', 'form_company');

function form_postcode($postcode) {
	return '〒';
}
add_filter('booking_form_postcode', 'form_postcode');

function form_address($address) {
	return '代表者住所';
}
add_filter('booking_form_address', 'form_address');

function form_tel($tel) {
	return '代表者TEL';
}
add_filter('booking_form_tel', 'form_tel');

function form_name($name) {
	return '代表者名前';
}
add_filter('booking_form_name', 'form_name');

function form_email($email) {
	return '代表者E-Mail';
}
add_filter('booking_form_email', 'form_email');

予約フォーム確認画面

予約フォーム送信すると表示される、予約確認画面に設定されているメッセージフィルターです。

  • ご予約に関する…:booking_form_terms_conditions
    デフォルトは文字列の最後にbrタグ「<br />」が付加されています。
  • 予約に関する規約:booking_form_terms_link_title
  • 規約に同意します。:booking_form_terms_accedence
  • 予約する:booking_form_submit_button
    デフォルトは「<button …」タグが設定されています。
add_filter('booking_form_terms_conditions', 'form_terms_conditions');
function form_terms_conditions($str) {
    return '以下の規約ページを確認してください。<br />';
}

add_filter('booking_form_terms_link_title', 'form_terms_link_title');
function form_terms_link_title($str) {
    return '規約ページを開く';
}

add_filter('booking_form_terms_accedence', 'form_terms_accedence');
function form_terms_accedence($str) {
    return '規約ページを確認して同意します。';
}

add_filter('booking_form_submit_button', 'form_submit_button');
function form_submit_button($btn) {
    return '<button type="submit" id="booking_form_confirm_button" value="validate">予約を実行する</button>';
}

人数ラベルの書き換え

以下に人数のラベルを書き換えるサンプルを掲載します。ラベルは「大人・小人」を「男性・女性」に変更する方法です。ラベルの書き換えはフロントエンド表示のみで、管理画面での書き換えはできません。

function form_count_label($str) {
    if ($str == '大人') {
        return '男性';
    } elseif ($str == '小人') {
        return '女性';
    }

    return '';
}
add_filter('booking_form_count_label', 'form_count_label');

予約カレンダー表示

bcalfilter予約カレンダーのテーブルキャプション、日付、前次月のリンク文字列について、表示内容の置き換えができます(右図参照)。

  • 予約カレンダーキャプション
    mtssb_caption
  • 日付
    mtssb_day
  • 前月 リンク文字列
    mtssb_prev_title(無償版)
    mtssb_prev_pagination(ビジネス版)
  • 次月リンク文字列
    mtssb_next_title(無償版)
    mtssb_next_pagination(ビジネス版)

キャプションや前月・次月のフィルターでは、Unix Time 形式のデータが渡されます。

ビジネス版と無償版でメッセージフィルターの名称が異なります。またビジネス版では、第2引数が配列で渡されます。サンプルプログラムを利用する場合、メッセージフィルター名とパラメータの内容に注意してください(240909)。

function booking_calendar_caption($message, $daytime) {
// 無償版
return date('F, Y', $daytime);
// ビジネス版 return date('F, Y', $daytime['month']); } add_filter('mtssb_caption', 'booking_calendar_caption', 10, 2); function booking_calendar_prev($message, $daytime) {
// 無償版 return date('F, Y', $daytime);
// ビジネス版
return date('F, Y', $daytime['prev']); } add_filter('mtssb_prev_title', 'booking_calendar_prev', 10, 2); function booking_calendar_next($message, $daytime) {
// 無償版 return date('F, Y', $daytime);
// ビジネス版
return date('F, Y', $daytime['next']); } add_filter('mtssb_next_title', 'booking_calendar_next', 10, 2);

時間のデータに関してWordPressはUTCで扱っております。そのため日付の表示で「date()」を利用すると9時間のズレを生じる場合があります。その場合、WordPressが用意する「date_i18n()」の利用を試してください。

予約日時間割表示

時間割カレンダー予約カレンダーから指定された日の時間割表示で図の部分の表示の置き換えができます。

  • 予約品目タイトル
    mtssb_day_title(無償版)
    mtssb_timetable_name(ビジネス版)
  • 予約年月日
    mtssb_day_caption(無償版)
    mtssb_timetable_date(ビジネス版)
  • 時間タイトル
    mtssb_daily_time_title
  • 予約タイトル
    mtssb_daily_booking_title
  • 時間割時間
    mtssb_time_header

日付や時間のフィルターでは、Unix Time形式のデータが渡されます。

なおWordPressは時間の取り扱いをUTCで扱っております。そのため日付の表示で「date()」を利用すると9時間のズレが生じますので、WordPressが用意する「date_i18n()」を利用するようにして下さい。

function timetable_day_title($message, $title) {
	return '<h4>'. $title . '</h4>';
}
add_filter('mtssb_day_title', 'timetable_day_title', 10, 2);

function timetable_name($title, $param) {
    return '<h4>'. $title . '</h4>'; 
}
add_filter('mtssb_timetable_name', 'timetable_name', 10, 2);

function timetable_day_caption($message, $daytime) {
	return date_i18n('Y/m/d', $daytime);
}
add_filter('mtssb_day_caption', 'timetable_day_caption', 10, 2);

function timetable_date($dateStr, $param) {
    return date_i18n('Y/m/d', $param['day']);
}
add_filter('mtssb_timetable_date', 'timetable_date', 10, 2);

function timetable_time_title($message) {
        return '予約時間割';
}
add_filter('mtssb_daily_time_title', 'timetable_time_title');

function timetable_booking_title($message) {
        return '予約状況';
}
add_filter('mtssb_daily_booking_title', 'timetable_booking_title');

function timetable_time_header($message, $tabletime) {
    return date('H:i', $tabletime) . '~';
}
add_filter('mtssb_time_header', 'timetable_time_header', 10, 2);

(220909 mtssb_timetable_name,mtssb_timetable_date追加) 

送信ボタンの書き換え

フォーム送信で「予約確認」と「予約する」の2つの送信ボタンがありますが、それぞれ「申込確認」と「申込む」に書き変えたい場合の例を次に示します。

function form_send_button($send_button) {
	return '<button name="reserve_action" type="submit" value="validte">申込確認</button>';
}
add_filter('booking_form_send_button', 'form_send_button');

function form_submit_button($submit_button) {
	return '<button name="reserve_action" type="submit" value="confirm">申込む</button>';
}
add_filter('booking_form_submit_button', 'form_submit_button');

画像を利用したボタンにしたい場合は、以下のようなHTMLソースも可能です。

<input type="image" name="reserv_action" value="validate" src="/images/xxx.jpg" />