WordPressで予約システムが簡単に設置できるプラグイン「MTS Simple booking」
無料でそこそこの機能がついているので、大変重宝しています。
ただ、融通がきかないんですよね〜。
いろいろカスタマイズがしたいなら、有料のビジネス版を使ってください、ということなんだろうと思いますけどね。
とはいえ、MTS Simple bookingはとてもシンプルにできているので、PHPが少しわかるようなスキルをお持ちであれば、それほど悩まずにカスタマイズもできます。
ということで、シンプル予約システムのカスタマイズ例を3つご紹介します。
はじめに
●基本的なインストール、設定などの操作は・・・
基本的なインストール方法、設定方法は、MT Systemsさんのスタートガイドを参考にしましょう。
TECH ACADEMYさんのこちらのサイト→https://techacademy.jp/magazine/7475 の方がわかりやすいかもしれません。
●この記事で使用しているMTS Simple Bookingのバージョン
現時点でダウンロードが可能な「MTS Simple Bookin C Ver.1.4.0」を使っています。
ダウンロードはこちら。
カスタマイズの前にはバックアップを取ってね!
プラグインファイルをカスタマイズするので、すぐにもとに戻せるように、バックアップをとっておきましょう。
カスタマイズするファイルは、
/wp/wp-content/plugins/mts-simple-booking-c
に入っています。
こちらをフォルダごとコピーして、バックアップ用のフォルダを作成し、その中に保存しておきましょう。
カスタマイズ例3点
最近実際にカスタマイズした3点をご紹介します。
先述しましたが、カスタマイズするファイルは
/wp/wp-content/plugins/mts-simple-booking-c
にすべて入っています。
予約時間を15分刻みにする
予約品目で予約内容を作成するときに設定する「予約時間割」で、スタート時間を決めますが、デフォルトでは設定できる時間が10分刻みになっています。
管理画面 > 予約品目 から新規作成 or 既存の記事を開くと、ページの下の方にあります。
修正前(デフォルト)
▼デフォルトの設定は、このように10分刻みでしか設定ができません。
しかし、お店の状況によっては1分刻み、5分刻み、15分刻み、30分刻みなど・・・、細かく設定したい場合もあると思います。
設定方法
修正するファイル:mtssb-article-admin.php
このファイルに記載のある、$this->_out_option_minute(0, 10) の「10」が「10分刻み」という設定になります。
ここを、希望の数値にします。
・5分刻みの場合は「$this->_out_option_minute(0, 5) 」
・15分刻みの場合は「$this->_out_option_minute(0, 15) 」
場所は98行目あたりです。
・・・
<select id="timetable-minute" name="start[minute]">
<?php echo $this->_out_option_minute(0, 15) ?>
</select><?php _e('Minute', $this->domain) ?> <a id="add-timetable" class="add-timetable button" href="javascript:void(0)" on
・・・
修正後
▼このように、15分刻みになりました。
同日の複数予約の日付をまとめたい
カレンダー表示をONにしている場合は、
カレンダーから日付を選択 → 該当している日付で予約できるコースの一覧ページでコースを選択
という手順になるかと思います。
コースごとに日付が表示されているのですが、そもそもカレンダーから日付を選択して行き着いているので、日付の表示は一つでいいですよね。
そういう要件が実際にあったので、そのときに行ったカスタマイズ方法をご紹介します。
修正前
▼日付をひとつに纏めたほうが、スッキリしそうですよね。
修正方法
修正するファイル:mtssb-front.php
表を作成しているところが、401行目あたりの「<div class=”day-calendar”>」から下になります。
この下にある、
<?php echo apply_filters('mtssb_day_caption', '<p>' . date(__('F j, Y', $this->domain), $daytime) . ' (' . __(date('D', $daytime)) . ')' . '</p>', $daytime) ?>
ここが、日付を表示するためのコードになります。
これを一つにするためには、
397行目あたりの
<?php foreach ($this->articles as $article_id => &$article) :
よりも前に移動しましょう。
<!-- 日付をforeachよりも外に出す -->
<?php echo apply_filters('mtssb_day_caption', '<p>' . date(__('F j, Y', $this->domain), $daytime) . ' (' . __(date('D', $daytime)) . ')' . '</p>', $daytime) ?>
<?php foreach ($this->articles as $article_id => &$article) :
$this->schedule[$article_id] = get_post_meta($article_id, $key_name, true);
// 予約クローズなら何も表示しない
if (!$this->schedule[$article_id][date('d', $daytime)]['open']) continue;
?><div class="day-calendar">
<?php echo apply_filters('mtssb_day_title', "<h3>{$article['name']}</h3>", $article['name']) ?>
<!-- ここにあった日付のコードは削除。 -->
<table>
<tr>
<th class="day-left"><?php echo apply_filters('mtssb_daily_time_title', __('Time', $this->domain)) ?></th>
<th class="day-right"><?php echo apply_filters('mtssb_daily_booking_title', __('Booking', $this->domain)) ?></th>
</tr>
<?php foreach ($article['timetable'] as $time) : ?>
<tr>
<th class="day-left"><?php echo apply_filters('mtssb_time_header', date('H:i', $time), $time) ?></th>
<td class="day-right"><?php $this->_reservation_of_the_article($article_id, $article, $daytime + $time, $this->schedule[$article_id][date_i18n('d', $daytime)]) ?></td>
</tr><?php endforeach; ?>
</table>
こんな感じ。
修正後
▼すっきりしました〜\(^o^)/
ちなみに・・・
同じ場所でテーブルを作成しているので、列と行を入れ替えたい、テーブルじゃなくてdlにしたいなどの要件があれば、ココらへんをカスタマイズすることでできると思います。
お問い合わせ項目を増やしたい。
たぶん、これが一番多いカスタマイズ要件なんじゃないかなと思います。
デフォルトの項目は本当に最低限のものだけで、汎用性もありません。
項目の追加には、5箇所の修正が必要になります。
メールにも項目追加したい場合は、更に1ファイル、2箇所の修正が入ります。
項目の追加についてはこちらのページを参考にしました。メールへの項目追加はこのページには載っていなかったので後述します。
メールの項目追加について
メールの項目追加方法については次のような手順で行いました。
ファイル名:mtssb-mail.php
90行目あたり。メール文内の変数を追加します。
private function _replace_variable($str, $adda=array()) {
$search = array(
'%CLIENT_NAME%',
'%RESERVE_ID%',
'%NAME%',
'%POSTCODE%',
'%ADDRESS%',
'%TEL%',
'%FAX%',
'%EMAIL%',
'%WEB%',
'%SHOZOKU%' /* 所属を追加。 */
);
113行目あたり。「$replace」にも変数を追加します。
$replace = array_merge($adda, array(
$this->shop['name'],
$this->shop['postcode'],
$this->shop['address1'] . ($this->shop['address2'] ? "\n{$this->shop['address2']}" : ''),
$this->shop['tel'],
$this->shop['fax'],
$this->shop['email'],
$this->shop['web'],
$this->shop['shozoku'] /* 所属の追加 */
));
174行目あたり。予約メールの本文生成に追加します。
if (0 < $column['tel']) {
$body .= apply_filters('booking_form_tel', '電話番号') . ":{$client['tel']}\n";
}
/* 所属の追加 */
if (0 < $column['course']) {
$body .= apply_filters('booking_form_shozoku', '所属') . ":{$client['shozoku']}\n";
}
以上で、メールでも表示がされたと思います。
まとめ
久々に、MTS Simple bookingのカスタマイズをする仕事があったので、主にやったカスタマイズをまとめてみました。
非常にいいプラグインではありますが、融通が利かないのが難点。
しかし、コードもきれいでカスタマイズがしやすいと思いますので、少しPHPがわかる人だったら楽勝でできると思います。
コツは、生成されたhtmlのidタグでファイル検索すること。
カスタマイズする場所が簡単に見つかると思います。
何度も言っちゃうけど、何かあったときのためのバックアップは忘れずにネ。