MTS Simple Bookingで予約品目ごとに異なるカスタマイズを行う方法

WordPressプラグインのMTS Simple Bookingビジネス版では、設定画面から行う設定のほかに、コードを追加することで柔軟なカスタマイズが可能だ。
基本的には開発者のWebサイトを見ながら書けばいいのだが、ここでは悩みやすい予約品目ごとに異なるカスタマイズを行う方法を紹介する。

jQuery編

jQueryを使ってフロントエンドでの処理を追加したいことがある。
例えば「新規利用」で「はい」を選んだ時だけ表示されるオプションフィールドを表示するなどするときとか。
そんな時まずは次のような変数を用意する。

const aid = $('[name="booking[article_id]"]').val(); // 現在の予約品目IDを取得
const custom_aid = ['10', '11', '12']; // カスタマイズしたい予約品目ID

カスタマイズするコードはこんな感じで書く。

if( custom_aid.includes(aid) ){

    // この中にコードを書いていく

}

注意点としては、subscriptionページでは使えないというのがある。
代わりの方法としては、こんな感じだろうか?

const custom_regexp = /予約品目名1|予約品目名2|予約品目名3/g;

if( custom_regexp.test( $('.subscription-header .subscription-title').text() ) ){

    // この中にコードを書いていく

}

PHP(フィルターフック)編

MTS Simple Bookingビジネス版ではさまざまなフィルターフックが用意されているので、「お名前」を「担当者名」に書き換えるみたいなことが簡単にできる。
変数の用意は次のとおり。

// 予約品目ID
$custom_aid = array(10,11,12);

// MTSSB 予約品目IDの保管
function mtssb_set_article_id($aid) {
    global $mtssb_article_id;
    if ( !empty($aid) ) {
        $mtssb_article_id = $aid;
    }
}
add_filter('booking_form_set_article_id', 'mtssb_set_article_id');

こうすることで$mtssb_article_idで現在の予約品目IDが、$custom_aidでカスタマイズしたい予約品目IDがわかるようになっている。
カスタマイズするコードの例はこんな感じ。

// 人数ラベルの変更
function form_count_label($str) {
    global $mtssb_article_id, $custom_aid;
    if ( in_array( $mtssb_article_id, $custom_aid, false ) && $str == '大人') {
        return '18歳以上';
    } elseif ( in_array( $mtssb_article_id, $custom_aid, false ) && $str == '小人') {
        return '18歳未満';
    } else {
        return $str;
    }
}
add_filter('booking_form_count_label', 'form_count_label');

メールの文面

メールの文面は設定画面からも編集できるが、予約品目ごとに内容を変える時はフィルターフックの出番だ。
予約メールの後文にメッセージを追加する時の例がこちら。

function booking_mail_footer($str, $status) {
    global $custom_aid;
    if ( in_array( $status['article_id'], $custom_aid, false ) ) {
        $message = <<<EOF
        (注1)ここにテキストが入ります。
        (注2)ここにテキストが入ります。
        (注3)ここにテキストが入ります。
        EOF;
        return $message . $str;
    } else {
        return $str;
    }
}
add_filter('mtssb_mail_booking_footer', 'booking_mail_footer', 10, 2);

ここでは2つ目の引数$status['article_id']で現在の予約品目IDが取れる。
注意点はPayPal決済のため他ページにリダイレクトすると、現在の予約品目IDが失われてしまう事。
代替案も見つからなかったので、今のところPayPal決済使用時にメール文面をカスタマイズする事はできないという事になる。

参考

関連記事

コメント

この記事へのコメントはありません。

TOP