特定の曜日だけ時間割を変える。

MTS Simple Booking C をカスタマイズして、土曜日だけ違う時間割にするのをやってみた。

やろうと思ったきっかけは、下記のブログのコメントを見つけたこと。

コワーキングスペースの予約システムをプラグインで実現する-その1

平日と土曜日を違う予約時間にして、1つの固定ページにまとめることができないかと質問しているコメントがあった。
そういう要望のある人が結構居るかもしれない。

下記の設定でやってみる。

土曜日以外の時間割 - 10:00 12:00 14:00 16:00

土曜日の時間割 - 9:00 11:00

上記の「土曜日以外の時間割」で作成してある「サンプル室A」に、「土曜日の時間割」を組み込んでみる。

まず、予約品目を新規作成し、上記の「土曜日の時間割」に設定する。
作成後に予約品目IDをメモしておく。
予約品目の画面で「編集」にマウスカーソルをのせて
yoyakuhinmokuID
下に表示される数字が「予約品目ID」。この場合は「58」。

この新規作成した予約品目に、予約システム → スケジュール で土曜日にチェックをつけてスケジュール保存しておく。
doyousche

この後、通常の予約品目ならショートコードを書いた固定ページでカレンダーを表示させるが、この予約品目はショートコードは使わないでプログラムを改造して「サンプル室A」のカレンダーに合成させる。

mtssb-front.php を編集する。まず下記の黄色にマークした4行を挿入。

赤数字の部分は必要に応じて違う数字にしなくてはならないので、上から順に説明する。

private $specific_week_num = 6; //時間割を変える曜日
この数字は曜日を示す。
0-日曜,1-月曜,2-火曜,3-水曜,4-木曜,5-金曜,6-土曜
今回は土曜日を違う時間割にするので、土曜日の番号「6」にしている。違う数字にすると、他の曜日になる。

private $original_week_id = 6; //合成先の予約品目ID
この数字は合成先の予約品目ID にする。
この場合は「サンプル室A」の予約品目ID の「6」にしている。

private $convert_week_id = 58; //時間割を変える曜日の予約品目ID
時間割を変える曜日用に作成した予約品目ID の数字にする。
この場合は、上記で新規作成した予約品目ID の「58」にしている。

さらにmtssb-front.php の下記の場所に黄色にマークした6行を挿入。

これを挿入すると、指定した予約品目のカレンダーの指定した曜日をクリックした時、予約品目の情報を指定した曜日用のものに入れ替える動作をする。

これで、サンプル室Aの土曜日の所をクリックすると
doyou
土曜日用に作成した時間割で予約できる。
doyoujikan
これだけで予約はできるが、このままだと予約が埋まってもカレンダーの土曜日の欄が○印のまま変わらないので、さらに修正。
mtssb-front.php の下記の場所に黄色にマークした14行を挿入。

この部分のプログラムは、カレンダーを表示する時に繰り返し処理される部分。
これを挿入すると、指定した予約品目のカレンダーを表示する時、指定した曜日の時は予約品目情報を入れ替えて、
指定した曜日以外の時は、指定した曜日の予約品目情報に入れ替わっていれば元に戻すという動作をする。

他の関係ない予約品目のカレンダーを表示する時には影響がない。

これでサンプル室Aの土曜日の表示が変わるようになった。
doyouyoyaku

以上で完了。
サンプルサイトサンプル室予約サイト のサンプル室Aで動作確認ができる。


質問があったので追記

曜日ではなく、月で時間割を変える方法
同じカレンダーで9月と10月で時間割を変える場合

まず、予約品目を新規作成し、10月以降の時間割に設定する。
作成後に予約品目IDをメモしておく。
やり方は、この記事の最初に書いてあるので同様に行う。

そして新規作成した予約品目に、予約システム → スケジュール で使用する日にチェックをつけてスケジュール保存しておき、下記の作業を行う。

mtssb-front.php を編集する。まず下記の黄色にマークした3行を挿入。

赤数字の部分は自分の予約品目IDにしなくてはならない。

private $original_id = 6; //元の予約品目ID
この数字は9月まで使用中の予約品目ID 。

private $convert_id = 58; //新しい時間割の予約品目ID
これは10月以降用に作成した予約品目ID の数字にする。

さらにmtssb-front.php の下記の場所に黄色にマークした7行を挿入。

あとで不要になって消したい時、分かり安いよう「ここに挿入」の文字をつけておこう。
黄色にマークした部分の上から4行目

if(date_i18n(‘n’, $daytime)>=10

この部分の >=10 が、月が10以上の場合(10月、11月、12月)は新しい予約品目に変えるよう指示している。
ちなみに、10月だけにしたいのなら、>=10 を ==10 に変えれば良い。

予約が埋まった時にカレンダーが○印から変わるようにするため、さらに修正。
mtssb-front.php の下記の場所に黄色にマークした15行を挿入。

黄色の上から4行目の、>=10 が先ほどと同じ。

以上で完了
これで、9月まで使用していたのと同じカレンダーで、10月以降は新しい時間割に変わる。

ただし、このままだと1月に、元の9月の時間割に戻ってしまう。
9月の予約が不要になった時点で、9月まで使用していた時間割も新しい時間割に変更し、
予約品目に、予約システム → スケジュール で使用する日にチェックをつけてスケジュール保存しておけば、1月以降も新しい時間割になる。
(その時点で、今後時間割変更が不要ならこの記事でプログラムを修正した箇所を削除して元に戻しても良い。その際は元の予約品目に、予約システム → スケジュール で使用する日にチェックをつけてスケジュール保存するのを忘れないように。)

  • このエントリーをはてなブックマークに追加

コメント

  1. 伊藤裕子 より:

    はじめまして。
    MTS Simple Booking C を使って特定日だけを違う時間割にしたくて、プラグインの編集を記述しているサイトをさがしていました。
    まさにこのサイトが希望に近いもので感動しました。

    しかし私のやりたいことは、平日+指定日(土曜・祝日・年末年始)1つの固定ページにまとめたいのです。

    ご迷惑でなければ、ぜひカスタマイズの仕方を教えていただければと思いご連絡しました。
    よろしくお願いします。

  2. 管理人 より:

    伊藤様、はじめまして。このブログの管理人です。
    コメントに気づかず、返信が遅れてすいません。

    平日+指定日(土曜・祝日・年末年始)を1つの固定ページにまとめたいとの要望ですが
    「曜日」ができるので、理屈の上では「日」も同じ事ができます。

    しかし日本の祝日は毎年違う日になるうえに、振替休日や国民の休日があったりなかったりして、自動的に祝日を取得するのが難しいです。
    そこで、自動をあきらめて祝日を手動で入力することにした場合、
    毎年、指定日を入れ替えることになりますが、入れ替える数も多いし総数も変わります。
    プログラミングの知識のない人でも簡単に入れ替えができる形で..とここまで考えて、そのようなプログラムを作る作業が大変なので断念しました。

    ご期待に添えず申し訳ありません。

  3. マゼンタ より:

    すみません…

    『この予約品目はショートコードは使わないでプログラムを改造して「サンプル室A」のカレンダーに合成させる。』

    とありますが…どうやって表示させるんですか?

  4. 管理人 より:

    土曜日の時間割用に作成した「この予約品目」(予約品目ID-58)は
    「サンプル室A」(予約品目ID-6)の土曜日の所に表示されます。

    「サンプル室A」(予約品目ID-6)は通常通りのショートコードを書いた固定ページでカレンダーを表示させています。

  5. yy より:

    はじめまして!
    土曜日だけ時間割りを変えたいと思い、
    上記の通り指定してみましたが、うまくいきません。

    私のwp上のmts-simple-booking-c/mtssb-front.phpは
    停止中になっているようです。

    使用中に変更するにはどのようにしたらよいかお教えいただけないでしょうか。
    何卒よろしくお願いします。

  6. 管理人 より:

    yyさん、はじめまして。

    私のmts-simple-booking-c/mtssb-front.phpも
    停止中になっています。

    mts-simple-booking-c/mts-simple-booking.phpだけ
    使用中になっています。

    これで正常に動作しています。

  7. yy より:

    返信ありがとうございます!
    「スケジューリングの予約品目と年月」の項目を変更せずに登録していたのが原因でした。
    変更できました。感動!!
    phpの知識が全くないのでもう一つ質問です。
    土日のスケジュール変更をしたいのですが、

    // 時間割を変える曜日と予約品目IDの設定
    private $specific_week_num = 6; //時間割を変える曜日(0-日曜 1-月曜 2-火曜 3-水曜 4-木曜 5-金曜 6-土曜)

    ↑ここに曜日をふたつ指定するとエラーが出ます。
    この場合どのように記述したらよろしいですか?

    何卒よろしくお願いします。

  8. 管理人 より:

    yyさん
    新しい記事「特定の2つの曜日の時間割を変える。」を投稿しました。
    そちらをご覧下さい。

  9. はじめ より:

    はじめまして。
    このシステムを導入しようと思ったのですが
    ダウンロード先が403エラーでzip入手ができません。

    大変申し訳ない質問なのですが
    どこか移転先かダウンロードサイト、ご存知でしょうか。

  10. 管理人 より:

    製作者様のサイトからダウンロードできると思います。
    http://mtssb.mt-systems.jp/

  11. はじめ より:

    なぜか異なるネット環境だとみれました。
    ありがとうございました!

  12. 佐藤輝彦 より:

    はじめまして。大変有益な情報のご提供をありがとうございます。
    ご回答いただける内容かはわかりませんが質問させていただきます。
    ゴルフ場の予約に使いたいのですが、7分刻みの設定は可能でしょうか?
    カスタマイズ方法などフォーラムの情報も検索してみましたが見つけることがで
    きませんでした。宜しくお願いいたします。

    • 管理人 より:

      申し訳ありませんが分かりません。
      お役に立てなくてすいません。

      • 佐藤輝彦 より:

        ご回答をありがとうございました。
        製作者のMTS様に問い合わせましたら、ビジネス版では対応可能とのことでした。
        管理人様のアドバイスでテスト用のサイトも試すことができ、購入前に十分な評価ができそうです。深謝します。

  13. 蛯原 より:

    はじめまして。貴サイトを参考にカスタマイズさせていただいています。
    一つ教えていただきたいのですが、サンプル室予約サイトの予約カレンダーにある「○」をクリックすると時間帯選択画面となり、希望する時間が選べるようになります。
    この画面で左下に「戻る」ボタンがあるのですが、これを私も設置したいのですが、どうしてもできず、試行錯誤しています。
    アドバイスいただければ大変有難いです。

    • 管理人 より:

      はじめまして。
      JavaScriptでブラウザの戻るボタンをつけています。
      mtssb-front.php の下記の位置に黄色にマークした行を追加して下さい。

      ただし、カレンダーをサイドバーに設置している場合

      に変えて下さい。ブラウザのリロードになります。

  14. yamaco より:

    はじめまして
    当機能を、ビジネス版で実現することは可能でしょうか。
    mtssb-front.phpの内容自体が少し違うようですが、それらしき箇所にコードをコピペしてみましたが、やはりダメでした。

  15. 佐伯美穂 より:

    はじめまして!
    参考にさせて頂き、とても助かっております。
    1点質問です。
    翌月から時間帯を変更したい場合、どのようにすればよろしいでしょうか?

    例)9月 11:00~/12:30~/14:30~/16:00~
      10月 10:00~/11:20~/13:20~/14:40~/16:00~

    ご教授頂けるとありがたいです。よろしくお願いいたします。

佐伯美穂 にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です