小規模な宿泊施設の予約システムを導入する。

ワードプレスで宿泊予約システムを導入する。

  これはワードプレスのプラグイン、 mts-simple-booking-cをカスタマイズして使う 無料の予約システムの導入方法です。    

 

mts-simple-booking-cとは

  まずは必要なプラグインをインストールしましょう。
配布先 「MTS Simple Booking, WordPress Plugin Software」 から無料版の最新プラグインをダウンロードしてください。

プラグインの直接インストールの方法は、 「ワードプレスでプラグインを追加する方法」をご覧下さい。
  さて、基本的にmts-simple-booking-cは、 講演会や習い事など、時間で区切られたイベントやサービスで使える簡単な予約システムです。
スタートガイド(取り扱い説明)もあり、 とても便利な予約システムですが、 宿泊予約などで使える予約システムではありません。
  とは言え、無料で使える宿泊予約システムが探しても無いので、 オープンソースのmts-simple-booking-cをカスタマイズし、 宿泊予約でも使えるようにするのが今回の目標です。
  もしpaypal決済やクレジット機能がついた宿泊予約システムをお探しの場合は、 有料のビジネス版がありますが、 宿泊予約でクレジット機能を使おうと思える規模の宿泊施設でしたら専門の予約システムサービスをご利用することをオススメします。

  ここで紹介する宿泊予約システムは、 小規模な宿泊施設で電話予約を簡略化する為のシステムです。  

mts-simple-booking-cをカスタマイズする。

まずは公式スタートガイドを見てください。
公式スタートガイド   ご覧の通り、ある程度、汎用性はあるのですが使う側によって、ところどころ変更する必要があることが分かると思います。
  今回はプラグインmts-simple-booking-cを宿泊予約に合うように、フォルダの中の以下のファイルを一部書き換えてカスタマイズします。

○ mtssb-settings-admin.php
○ mtssb-booking.php
○ mtssb-booking-admin.php
○ mtssb-mail.php
○ mtssb-booking-form.php languagesフォルダ
○ ja.mo
○ ja.po    

変更内容

 

  • 4つの項目を増やします。
    ・宿泊プラン ・宿泊日数 ・交通手段 ・予定到着時刻 適切でない言葉を変更して、宿泊予約らしくします。
  • 不必要な項目を削除します。

  カスタマイズにあたり、以下のサイトを参考にいたしました。
西沢直木のWebサイト様より WordPressプラグイン「MTS Simple Booking C」による予約システムの作成 http://www.nishi2002.com/3341.html

Medical-Index様より 【WordPress】プラグインを使って治療院の予約フォームを作る方法
http://medical-index.jp/wp/993/

ねこじゃらし様より 日本語化などに使うmoファイルの編集につい て
http://d.hatena.ne.jp/shiryu-911/20110204/1296789098

とても参考になりました。 ありがとうございます。
  それでは、順番にカスタマイズしていきましょう。    

宿泊予約システムらしい言葉に変更する。

mts001
  デフォルト(そのまま)では、 写真のように 「スタート時間」「この予約品目の予約時間となっております。」 などなど宿泊予約らしくありませんので、それらしい言葉に変更します。
 languagesフォルダ ○ja.mo ○ja.po を変更するのですが、変更するには 「poedit」 という専用のテキストエディタを使います。
 ダウンロードは下記よりオープンソースになっています。
 http://poedit.net/download.php ダウンロードが終わったら、 「ja.po」ファイルを「poedit」で開きます。  

mts001_2
  するとある程度決まった言葉が定義されていて、
 例えば
・Start Time→スタート時間→チェックインの時間を設定
・Add time→時間割追加→チェックインの決定・追加 などなど、 多くの項目を変更していきますが、 厳密に修正したい場合は、control+Fで言葉を探して変更すると早いです。
修正が終わったらエディタの左上の方にある 「更新する」をクリックしてファイルを更新すると、 同時に「ja.mo」ファイルを生成・更新してくれます。
 この「ja.mo」ファイルに文字情報が格納されていて、この通称「moファイル」を更新すれば、 簡単に表示語句を変更することができるわけです。
 最後に保存して、「ja.mo」「ja.mo」両方をアップロードしてください。
「poedit」の詳しい使い方は、検索すれば見つかります。
変更した結果

mts002  
 かなり宿泊予約システムぽくなりました。 mtssb-article-admin.phpファイル、 90行目あたりを変更すれば力技でそれらしくも出来ますが、 スマートに修正しました。    

固定ページを作成する。(カレンダーの作成)

  mts-simple-booking-cを使うには、 最低でも固定ページが3つ必要になってきます。

○宿泊状況から入力フォームへ誘導するページ「宿泊予約状況」:スラッグ(availability)
○予約フォームを表示するページ「宿泊のご予約」:スラッグ(booking-form)
○予約完了を表示するページ「宿泊のご予約を受け付けました」:スラッグ   (booking-thanks)

  宿泊予約名の設定も忘れないようにします。 後で必要な宿泊予約名のショートコードのidを、 プレビューしてURLから確認することができます。
固定ページの詳しい役割や作り方は、 公式スタートガイド もしくは WordPressプラグイン「MTS Simple Booking C」による予約システムの作成 をご覧下さい。  
  各ページには、それぞれの施設にあった文言を記入します。
 デフォルトで使用すると、page.phpの形式で出力されるので、 本格的に使う場合は新しくテンプレートphpを作って対応する方が良いかもしれません。
デフォルトで使うと、ヘッダーとサイドバーが表示されるので、 入力フォームとしては、別にした方がユーザビリティー的に良いと思います。
というわけで、ここではCSSも別にした新しいテンプレートphpを作り、後々、カスタマイズしやすいように作ります。
 新しいphpを作るには、 ワードプレスのテーマの中の使用中のテーマからindex.phpを見つけて、 ファイルをコピーし、ファイル名を変更。
 *ここでは、わかりやすく「booking.php」に変更しています。
 変更したファイルをドリームウィーバーなどテキストエディタソフトで開き、 php.ファイルの先頭にワードプレスのテンプレートを認識させるコードを記入します。  

<?php
/*
Template Name:booking.php <!--booking.php-->
*/
?>

  これがないと、ワードプレスにテンプレートだと認識してもらえず、 テンプレートとして使えません。 逆にNameを変えれば、テンプレートが幾つも作れるということです。 ユーザビリティー的には、個々にテンプレートを作るよりは、 一つのテンプレートを使う方が同じサイトにいるという安心感があるので、 テンプレートの複数使用は避けた方が良いかもしれません。   次に、作ったphpから不要な部分を削除していきます。 具体的には、ヘッダー部・サイドバー部・コンテンツ部(一部)です。 ヘッダーを削除すると、ヘッダー情報やグローバルナビなどが無くなるので、 へーダー情報だけでもはコピペしましょう。 コンテンツ部はコンテンツのループを残した状態で、不必要な部分を削除、CSSのクラス・IDを削除します。 これで、CSSが自由になりました。 サイドバーは完全に削除。 できればフッター部だけは残しておきます。   この状態でphpをアップ(single.phpなどがある階層と同じ)し、 作った固定ページの属性のテンプレートを変更して、 「宿泊予約状況」を見てみると。 mts003   まさにデフォルトなので、 新たにCSSを作りデザインします。 mts004   このまま予約した日をクリックしてしまうと、  

mts005   と、当日の詳細情報が表示されますが、 このページは同じ日の異なる時間の予約が必要な場合のページなので、 時間割が必要でない宿泊予約ではスキップさせたいので、 固定ページに記入したショートコードを  [monthly_calendar id=”先ほど紹介したidの数字” skiptime=”1″] と、skiptime=”1″を入れて、スキップさせることにします。
 1がスキップさせるという意味です。
  

ショートコードについて

  公式サイトの「予約カレンダー表示」を参照   そもそも固定ページにショートコードを記入しないと、 予約カレンダーが表示されないので注意しましょう。
 このカレンダーはワードプレスのウィジットでサイドバーへ簡単に表示する事が可能です。  

mts006
  このような感じになります。
 ですので、できるだけカレンダー部(テーブル)のCSSは、 クラスから始まるセレクタでデザインすると、 後々、楽になります。
 それでも、レイアウトが崩れてしまう場合は、 mts-simple-booking-cのフォルダ内の「mtssb-front.css」を直接変更するか、 テーマのスタイルシートで変更するといいでしょう。 ちなみにプラグインのCSS「mtssb-front.css」を変更する場合は、 /* 月間予約カレンダー */より下を、 デザインしたテーブルに関するCSSごと、ごっそり変更し、 テーブルの幅を100%にして、 paddingを変更・削除すると早いです。
  補足としてカレンダーの状況を表す○などの表示を、 数字(空数)表示することも可能ですが、 管理者が多忙な小規模施設では、 記号表記で対応した方が無難かと思います。

 

予約フォームをカスタマイズする。

mts007   見ての通りデフォルトでは標準的な入力項目しかありません。 表示されているのがコンパネにある予約品目の項目でもあり、 デザインを含め足りない項目や修正を加えていきます。
 宿泊施設なので、
 

  •  宿泊プラン名
  •  宿泊日数
  •  交通手段
  •  予定到着時刻

 
 を以上の項目を加えたいと思います。 表示切替が可能ですが、このプラグインでは連泊可能チェックがないので、 クライアントと相談し、加えるかどうか決めた方がいいと思います。    

mtssb-settings-admin.phpを修正する。

  512行目あたりを修正し、

・プラン「plan」
・宿泊数「stay」
・到着予定時刻「checkin」
・交通手段「root」

項目を追加します。  

'reserve' => array(
'column' => array(        // 0:不要 1:必須 2:任意
'company' => 1,
'furigana' => 2,
'name' => 1,
'email' => 1,
'postcode' => 2,
'address' => 2,
'tel' => 1,
),

  「company」と同様に下へソースをコピペして、必要な項目名に変更します。  

'reserve' => array(
'column' => array(        // 0:不要 1:必須 2:任意
'company' => 1,
'plan' => 1,
'stay' => 1,
'checkin' => 1,
'root' => 1,
'name' => 1,
'furigana' => 2,
'email' => 1,
'postcode' => 2,
'address' => 2,
'tel' => 1,
),
'title' => '【ご予約を承りました】',

  mts008
  アップ後に「コンパネ」→「予約システム」→「各種設定」→「予約メール」 成功していれば項目が追加されています。
 ※先に「ja.mo」ファイルで表記を変えているので、日本語に変換されています。
 mo.ファイルを変更していないと、 ・プラン「Plan」 ・宿泊数「Stay」 ・到着時刻「Checkin」 ・交通手段「Root」 と表記されます。
   交通手段と到着時刻の項目を追加したことで、 同意義の入退場や車に関する入力スクリプトが不要になったので削除します。
 そのままにしておいても問題ないのですが、 違いの説明を省く処置をします。
 ちょっと戻って290行目あたりを削除します。  

<input type="hidden" name="mts_simple_booking_controls[count][car]" value="0" />
<label><?php _e('Car', $this->domain) ?>:<input type="checkbox" name="mts_simple_booking_controls[count][car]" value="1"<?php echo $this->data['count']['car'] ? ' checked="checked"' : '' ?> /></label><br />
<?php _e('Checked items is included in reservation form page.', $this->domain);
break;
case 'message' : ?>
<input type="hidden" name="mts_simple_booking_controls[message][temps_utile]" value="0" />
<label><input id="message" name="mts_simple_booking_controls[message][temps_utile]" value="1" type="checkbox"<?php echo $this->data['message']['temps_utile'] ? ' checked="checked"' : '' ?> /> <?php _e('Entrance and exit schedule', $this->domain) ?></label><br />
<?php _e('Check to use the input item of entrance and exit schedule time.', $this->domain);
break;
default :
break;

  車に関するスクリプトと入退場に関するスクリプトです。
 「adminbar」アドミンバーに関する記述まで一緒に消さないように注意してください。 その削除したところへ  

<?php 

  とだけ足して、 次に188行目あたり  

add_settings_field('message', __('Message', $this->domain), array($this, 'controls_form'),
$option_name, $option_name, array('label_for' => 'message'));

  この2行を削除します。  
  mts009   予約システムの各種設定の予約パラメータから項目が消えていれば、 mtssb-settings-admin.phpの修正は終了です。    

mtssb-booking-admin.phpを修正する。

  まず忘れなように先に上記で削除した項目、 346行目あたりの車に関するスクリプトを削除します。  

車<input class="small-text" type="text" name="booking[client][car]" value="<?php echo esc_attr($client['car']) ?>" />台

 

 追加項目を追加する。

  283行目あたりに  

<th>
<label for="booking-company"><?php _e('Company', $this->domain) ?></label>
</th>
<td>
<input id="booking-company" class="mts-fat" type="text" name="booking[client][company]" value="<?php echo esc_attr($client['company']) ?>" />
</td>
</tr>

  「Company」の記述があります。
これを直下に4回コピペして、各項目に変更します。

・プラン「plan」
・宿泊数「stay」
・到着予定時刻「checkin」
・交通手段「root」

の 各項目ですが、 大文字が一つと小文字があるので注意してください。  

<th>
<label for="booking-plan"><?php _e('Plan', $this->domain) ?></label>
</th>
<td>
<input id="booking-plan" class="mts-fat" type="text" name="booking[client][plan]" value="<?php echo esc_attr($client['plan']) ?>" />
</td>
</tr>
<th>
<label for="booking-stay"><?php _e('Stay', $this->domain) ?></label>
</th>
<td>
<input id="booking-stay" class="mts-fat" type="text" name="booking[client][stay]" value="<?php echo esc_attr($client['stay']) ?>" />
</td>
</tr>
<th>
<label for="booking-checkin"><?php _e('Checkin', $this->domain) ?></label>
</th>
<td>
<input id="booking-checkin" class="mts-fat" type="text" name="booking[client][checkin]" value="<?php echo esc_attr($client['checkin']) ?>" />
</td>
</tr>
<th>
<label for="booking-root"><?php _e('Root', $this->domain) ?></label>
</th>
<td>
<input id="booking-root" class="mts-fat" type="text" name="booking[client][root]" value="<?php echo esc_attr($client['root']) ?>" />
</td>
</tr>

  mts010
  予約システム→追加編集に各項目の追加と車が削除されていれば、 mtssb-booking-admin.phpを修正は完了です。    

mtssb-booking.phpを修正する。

  追加項目を反映させるために、 462行目あたりを修正します。

// クライアントデータ
$client = &$booking['client'];
foreach ($client as $keyname => $val) {
if (!isset($post['client'][$keyname])) {
continue;
}
switch ($keyname) {
case 'company' :
case 'email' :
case 'postcode' :
case 'address1' :
case 'address2' :
case 'tel' :

  上記の「case ‘company’ :」に習って、

「case ‘plan’ :」
「case ‘stay’ :」
「case ‘checkin’ :」
「case ‘root’ :」

各項目を、 以下のように追記します。  

// クライアントデータ
$client = &$booking['client'];
foreach ($client as $keyname => $val) {
if (!isset($post['client'][$keyname])) {
continue;
}
switch ($keyname) {
case 'company' :
case 'plan' :
case 'stay' :
case 'checkin' :
case 'root' :
case 'stay' :
case 'email' :
case 'postcode' :
case 'address1' :
case 'address2' :
case 'tel' :

  続いて554行目あたりを修正します。  

* 新しい予約
*
*/
public function new_booking($daytime=0, $article_id=0) {
$new = array(
'booking_id' => 0,
'booking_time' => $daytime == 0 ? mktime(0, 0, 0, date_i18n('n'), date_i18n('j'), date_i18n('Y')) : $daytime,
'article_id' => $article_id,
'user_id' => 0,
'number' => 0,
'confirmed' => 0,
'parent_id' => 0,
'options' => null,
'client' => array(
'company' => '',
'name' => '',
'furigana' => '',
'birthday' => null,
'gender' => '',
'email' => '',
'postcode' => '',
'address1' => '',
'address2' => '',
'tel' => '',
'adult' => 1,
'child' => 0,
'baby' => 0,
'car' => 0,
),
'note' => '',
);
return $new;
>

  上記を先と同じように「company」の下に  

「''plan' => '',」「'stay' => '',」「'checkin'  => '',」「'root'  => '',」を各項目を追記します。
'company' => '',
'plan' => '',
'stay' => '',
'checkin' => '',
'root' => '',
'name' => '',
'furigana' => '',
'birthday' => null,
'gender' => '',
'email' => '',
'postcode' => '',
'address1' => '',
'address2' => '',
'tel' => '',
'adult' => 1,
'child' => 0,
'baby' => 0,
'car' => 0,

  これでシステム的な項目の追加が終わりました。    

mtssb-booking-form.phpを修正する。

  システム面が終了したので、続いて予約フォーム画面に、 追加項目の入力フォームを作ります。
まずは準備として469行目を修正します。  

// ログイン中であればログインユーザー情報をセットする
if (is_user_logged_in() && empty($client['name']) && empty($client['email'])) {
get_currentuserinfo();
$client['company'] = get_the_author_meta('mtscu_company', $current_user->ID);

  上記の「company」部をコピペし、 「plan」「stay」「checkin」 「root」 に変更して、 下記のように修正します。  

// ログイン中であればログインユーザー情報をセットする
if (is_user_logged_in() && empty($client['name']) && empty($client['email'])) {
get_currentuserinfo();
$client['company'] = get_the_author_meta('mtscu_company', $current_user->ID);
$client['plan'] = get_the_author_meta('mtscu_plan', $current_user->ID);
$client['stay'] = get_the_author_meta('mtscu_stay', $current_user->ID);
$client['checkin'] = get_the_author_meta('mtscu_checkin', $current_user->ID);
$client['root'] = get_the_author_meta('mtscu_root', $current_user->ID);

  コメントアウト通り、ログイン中のユーザーに対する命令なので、 ワードプレスから直接修正する場合に必要みたいですが、 どこで絡んで来るのか分からないので、参考サイトに習って不具合防止の為、修正しておきます。  

項目の追加

492行目あたりから始まるテーブル部を修正します。  

<table>
<tr>
<th>予約</th>
<td><?php echo esc_html($this->article['name']) ?><br />
<?php echo apply_filters('booking_form_date', date('Y年n月j日 H:i', $this->thetime), $this->thetime) ?>
</td>
</tr>
<tr>
<th><label for="client-adult">人数</label></th>

  上記の各HTMLタグに入力フォームを追加する修正作業です。  

<?php if (0 < $this->clcols['company']) : ?><tr>
<th><label for="client-company"><?php echo apply_filters('booking_form_company', '会社名'); echo $this->clcols['company'] == 1 ? $this->_require_message() : '' ?></label></th>
<td>
<input id="client-company" class="content-text medium" type="text" name="booking[client][company]" value="<?php echo esc_html($client['company']) ?>" maxlength="100" />
<?php if (isset($this->errmsg['company'])) : ?><div class="error-message"><?php echo $this->errmsg['company'] ?></div><?php endif; ?></td>
</tr><?php endif; ?>

  具体的には上記「company」部をコピペして、同じ要領で修正する作業です。
もしクライアントに項目の追加・修正を頼まれた場合は対応可能です。    

プラン「plan」の追加

順番的には宿泊日の下に入れたいので、 テーブルの二列目のtrタグをセレクトメニューに修正し、optionを  disabledにして、記入漏れを防いでいます。  

<table>
<tr>
<th>ご宿泊日</th>
<td><?php echo esc_html($this->article['name']) ?><br />
<?php echo apply_filters('booking_form_date', date('Y年n月j日 H:i', $this->thetime), $this->thetime) ?>チェックイン
可</td>
</tr>
<?php if (0 < $this->clcols['plan']) : ?><tr>
<th><label for="client-plan"><?php echo apply_filters('booking_form_plan', 'ご利用プラン'); echo $this->clcols['plan'] == 1 ? $this->_require_message() : '' ?></label></th>
<td>
<select name="booking[client][plan]">
<option  selected disabled>▼ ご利用プランを選択して下さい ▼</option>
<option>素泊まりプラン</option>
<option>朝食プラン</option>
<option>スタンダードプラン</option>
<option>四季の贅沢プラン</option>
<option>海鮮プラン</option>
</select>
<?php if (isset($this->errmsg['plan'])) : ?><div class="error-message"><?php echo $this->errmsg['plan'] ?></div><?php endif; ?></td>
</tr><?php endif; ?>

 

続けて「stay」宿泊日数の追加

 

<?php if (0 < $this->clcols['stay']) : ?><tr>
<th><label for="client-stay"><?php echo apply_filters('booking_form_stay', 'ご宿泊日数'); echo $this->clcols['stay'] == 1 ? $this->_require_message() : '' ?></label></th>
<td>
<select name="booking[client][stay]">
<option  selected disabled>▼ ご宿泊日数 ▼</option>
<option>1泊</option>
<option>2泊</option>
<option>3泊</option>
<option>4泊</option>
<option>5泊以上</option>
</select>
<?php if (isset($this->errmsg['stay'])) : ?><div class="error-message"><?php echo $this->errmsg['stay'] ?></div><?php endif; ?></td>
</tr><?php endif; ?>
<tr>
<th><label for="client-adult">ご宿泊人数</label></th>

  人数ではなくご宿泊人数に変えています。
最初の予約もご宿泊日に変更しています。
あちこち丁寧語が抜けていたり、 宿泊予約に合わない言葉が使われているので注意します。  

value="<?php echo esc_html($client[$key]) ?>" maxlength="5" /> 名様

  上記も「名様」とを追加しています。  

<span class="cyuui">ご宿泊人数の入力にはご注意ください。<br />
お部屋の最大人数やプランによって、折り返しご確認の連絡をする場合があります。<br />
</span>

  また最後に上記の注意が書きを加えています。  

「checkin」ご到着予定時刻を追加する。

  ご宿泊人数の下にtrを以下のように追加します。  

<?php if (0 < $this->clcols['checkin']) : ?><tr>
<th><label for="client-checkin"><?php echo apply_filters('booking_form_checkin', 'ご到着予定時刻'); echo $this->clcols['checkin'] == 1 ? $this->_require_message() : '' ?></label></th>
<td>
<select name="booking[client][checkin]">
<select name="booking[client][checkin]">
<option value="未定">未定</option><option value="00時頃">00</option><option value="1時頃">01</option><option value="2時頃">02</option><option value="3時頃">03</option><option value="4時頃">04</option><option value="5時頃">05</option><option value="6時頃">06</option><option value="7時頃">07</option><option value="8時頃">08</option><option value="9時頃">09</option><option value="10時頃">10</option><option value="11時頃">11</option><option value="12時頃">12</option><option value="13時頃">13</option><option value="14時頃">14</option><option value="15時頃">15</option><option value="16時頃">16</option><option value="17時頃">17</option><option value="18時頃">18</option><option value="19時頃">19</option><option value="20時頃">20</option><option value="21時頃">21</option><option value="22時頃">22</option><option value="23時頃">23</option><option value="24時頃">24</option></select>
時 頃<br />
<span class="cyuui">※ 到着時間を大幅に超える場合は確認の連絡をする場合があります。</span>
<?php if (isset($this->errmsg['checkin'])) : ?><div class="error-message"><?php echo $this->errmsg['checkin'] ?></div><?php endif; ?></td>
</tr><?php endif; ?>
<tr>

 

 「root」ご利用交通機関を追加する。

  ご到着予定時刻の下にtrを以下のように追記します。  

<?php if (0 < $this->clcols['root']) : ?><tr>
<th><label for="client-root"><?php echo apply_filters('booking_form_root', 'ご交通手段'); echo $this->clcols['root'] == 1 ? $this->_require_message() : '' ?></label></th>
<td>
<select name="booking[client][root]">
<option  selected disabled>▼ お選び下さい ▼</option>
<option>バス・電車など交通機関を利用</option>
<option>お車</option>
<option>団体ツアーなどによる移動</option>
</select>
<?php if (isset($this->errmsg['root'])) : ?><div class="error-message"><?php echo $this->errmsg['root'] ?></div><?php endif; ?></td>
</tr><?php endif; ?>

  これで予約フォームが完成しました。

  mtssb-booking-form.phpは、とにかく「住所」「電話」「メッセージ」など、 修正箇所が多いので、メモを取りながら、 どこを修正するかしっかり決めて、 作業する方が効率が良いです。 mts011   参考までにスタイルシートと合わせて、出来上がったのがこのような感じです。
宿泊予約フォームらしくなったはずです。  

確認画面を修正する。

663行目あたりのテーブルを修正します。 これもtrタグの間に以下の「company」部をコピーして、  

<?php if (0 < $this->clcols['company']) : ?><tr>
<th><?php echo apply_filters('booking_form_company', '会社名') ?></th>
<td>
<?php echo esc_html($client['company']) ?>
<input type="hidden" name="booking[client][company]" value="<?php echo esc_html($client['company']) ?>" />
</td>
</tr><?php endif; ?>

  各項目をペーストして順番に編集する作業です。
先の作業と同様に、 「plan」「stay」「この間に人数」「checkin」 「root」の順なので、 一括して紹介します。  

<table>
<tr>
<th>ご宿泊日</th>
<td><?php echo esc_html($this->article['name']) ?><br />
<?php echo apply_filters('booking_form_date', date('Y年n月j日 ', $this->booking['booking_time']), $this->booking['booking_time']) ?><br /><?php echo apply_filters('booking_form_date', date('H時 i分', $this->thetime), $this->thetime) ?> チェクイン可
</td>
</tr>
<?php if (0 < $this->clcols['plan']) : ?><tr>
<th><?php echo apply_filters('plan', 'ご利用プラン') ?></th>
<td>
<?php echo esc_html($client['plan']) ?>
<input type="hidden" name="booking[client][plan]" value="<?php echo esc_html($client['plan']) ?>" />
</td>
</tr><?php endif; ?>
<?php if (0 < $this->clcols['stay']) : ?><tr>
<th><?php echo apply_filters('stay', 'ご宿泊日数') ?></th>
<td>
<?php echo esc_html($client['stay']) ?>
<input type="hidden" name="booking[client][stay]" value="<?php echo esc_html($client['stay']) ?>" />
</td>
</tr><?php endif; ?>
<tr>
<th>ご宿泊人数</th>
<td><?php foreach ($this->controls['count'] as $key => $val) : ?>
<div class="input-number"<?php echo $val != 1 ? ' style="display:none"' : '' ?>><?php
$title = apply_filters('booking_form_count_label', __(ucwords($key), $this->domain));
if ($title != '') { echo "$title<br />"; }
?>
<?php echo esc_html($client[$key]) ?><input type="hidden" name="booking[client][<?php echo $key ?>]" value="<?php echo esc_html($client[$key]) ?>" maxlength="5" /><?php echo apply_filters('booking_form_count_note', '') ?> 名様</div><?php endforeach; ?>
<?php if (isset($this->errmsg['count'])) : ?> <div class="error-message"><?php echo $this->errmsg['count'] ?></div><?php endif; ?></td>
</tr>
<?php if (0 < $this->clcols['checkin']) : ?><tr>
<th><?php echo apply_filters('checkin', 'ご到着予定時刻') ?></th>
<td>
<?php echo esc_html($client['checkin']) ?>
<input type="hidden" name="booking[client][checkin]" value="<?php echo esc_html($client['checkin']) ?>" />
</td>
</tr><?php endif; ?>
<?php if (0 < $this->clcols['root']) : ?><tr>
<th><?php echo apply_filters('root', 'ご交通手段') ?></th>
<td>
<?php echo esc_html($client['root']) ?>
<input type="hidden" name="booking[client][root]" value="<?php echo esc_html($client['root']) ?>" />
</td>
</tr><?php endif; ?>

mts012   修正後の確認画面です。 各項目と文字が正しければ、 以上でmtssb-booking-form.phpの完了です。    

mtssb-mail.phpを修正する。

さて、ようやく最後の修正です。 追加した項目を自動返信のメールにも反映させる為に、 131行目あたりを修正します。  

$body = apply_filters('booking_form_number_title', '[ご予約]', 'mail') . "\n"
. "{$article['name']}\n"
. apply_filters('booking_form_date_title', '日時:') . apply_filters('booking_form_date', date('Y年n月j日 H:i', $booking['booking_time']), $booking['booking_time']) ."\n"
. apply_filters('booking_form_date_number', '人数:');
foreach ($controls['count'] as $key => $val) {
if (0 < $client[$key]) {
$body .= apply_filters('booking_form_count_label', __(ucwords($key), $this->domain)) . " $client[$key]" . ($key == 'car' ? '台' : '名') . ', ';

  上記の部分に「plan」「stay」「checkin」 「root」を追加します。 これは上部テーブルにに挿入したいので、  

$body .= apply_filters('booking_form_company', '会社名') . ":{$client['company']}\n";
「compan」の参考に、少し変えて編集します。
$body = apply_filters('booking_form_number_title', '[ご予約内容]', 'mail') . "\n"
. "{$article['name']}\n"
. apply_filters('booking_form_date_title', '日時:')
.apply_filters('booking_form_date', date('Y年n月j日 H:i', $booking['booking_time']), $booking['booking_time']).('チェックイン可') ."\n"
. apply_filters('booking_form_plan', 'ご利用プラン') . ":{$client['plan']}\n"
.apply_filters('booking_form_stay', 'ご宿泊日数') . ":{$client['stay']}\n"
. apply_filters('booking_form_date_number', '人数:');
foreach ($controls['count'] as $key => $val) {
if (0 < $client[$key]) {
$body .= apply_filters('booking_form_count_label', __(ucwords($key), $this->domain)) . " $client[$key]" . ($key == 'car' ? '台' : '名様') . ', ';

  同時に後に続く「名」「連絡先」「連絡事項」などを 「名様」「ご連絡先」「ご連絡事項」に修正します。
  これで一通りのカスタマイズが終了しました。    

動作確認

  後はメールなどが正常に宿泊システムとして動いているか確認するだけです。 メールの返信内容は 予約システム→各種設定→予約メールから編集可能です。
   宿泊予約システムの動作確認は以下より 「宿泊予約確認」 プラグインを直接カスタマイズした場合は、 バージョンアップをすると新しいファイルに書き換えられるので、新しいバージョンには更新してはいけません。
  上記内容の確認用てして「確認用データ」を用意しておきます。

 必要な方は下記よりダウンロードしてください。
インストールする場合は、どんな不具合が起きるか保証できませんので、 必ずバックアップ等、対策をおとりください。

zip_bnr  

  以上、「小規模な宿泊施設の予約システムを導入する」でした。

こはる写真館

こはる写真館

天城スタジオフォトがギャラリー

天城スタジオフォトがギャラリー
ページの先頭へ