キノコノクニ

MTS Simple booking(無料版)のカスタマイズ例を3つご紹介!

WordPressで予約システムが簡単に設置できるプラグイン「MTS Simple booking」

無料でそこそこの機能がついているので、大変重宝しています。

ただ、融通がきかないんですよね〜。

いろいろカスタマイズがしたいなら、有料のビジネス版を使ってください、ということなんだろうと思いますけどね。

とはいえ、MTS Simple bookingはとてもシンプルにできているので、PHPが少しわかるようなスキルをお持ちであれば、それほど悩まずにカスタマイズもできます。

ということで、シンプル予約システムのカスタマイズ例を3つご紹介します。

はじめに

●基本的なインストール、設定などの操作は・・・

基本的なインストール方法、設定方法は、MT Systemsさんのスタートガイドを参考にしましょう。

スタートガイド
スタートガイドは Twenty Eleven テーマを使って簡単なサイトを構築する例を取り上げ、MTS Simple Booking を実際に操作、お試しいただく事を目的としております。いかに簡単に予約システムが構築でき(...)

TECH ACADEMYさんのこちらのサイト→https://techacademy.jp/magazine/7475 の方がわかりやすいかもしれません。

MTS Simple Booking Cの使い方ープラグイン | TechAcademyマガジン
完全日本語対応の予約システム運用プラグイン「MTS Simple Booking C」の使い方を解説しています。設定の部分から表示するところまで一連の流れを画像などを用いながら説明しています。店舗で予約システムなどが必要な場合はぜひご覧ください。

●この記事で使用しているMTS Simple Bookingのバージョン

現時点でダウンロードが可能な「MTS Simple Bookin C Ver.1.4.0」を使っています。

ダウンロードはこちら。

Download
すぐにご利用いただけますよう「スタートガイド」を用意いたしました。ダウンロードいただけましたら、スタートガイドに沿って操作いただきますと、システムの使い方が容易にご理解いただけますのでご活用下さい。 このシステムをご利用(...)

 

いぬいぬ
いぬ

カスタマイズの前にはバックアップを取ってね!

プラグインファイルをカスタマイズするので、すぐにもとに戻せるように、バックアップをとっておきましょう。

カスタマイズするファイルは、

/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箇所の修正が入ります。

項目の追加についてはこちらのページを参考にしました。メールへの項目追加はこのページには載っていなかったので後述します。

http://customize.wp.xdomain.jp/2015/05/16/post-141/

メールの項目追加について

メールの項目追加方法については次のような手順で行いました。

ファイル名: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タグでファイル検索すること。

カスタマイズする場所が簡単に見つかると思います。

いぬ

何度も言っちゃうけど、何かあったときのためのバックアップは忘れずにネ。

モバイルバージョンを終了