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タグでファイル検索すること。
カスタマイズする場所が簡単に見つかると思います。
何度も言っちゃうけど、何かあったときのためのバックアップは忘れずにネ。