Ver.1.11 予約自動返信メール送信時のフィルター機能追加

管理画面予約カレンダー

フロントエンドから予約されると予約内容を記した予約メールを、予約者・施設・モバイル・予約品目の指定、のメールアドレスへ送信します。

それぞれのメールの内容は各種設定の「予約メール」で定義された内容が予約者へ、それ以外へは必要となる予約情報のみ管理者へ送信するようになっています。

Ver.1.11.0では新たにメール送信にフィルター機能を追加して、必要に応じて件名や前文・後文を変更できるようにしました。

なおこのフィルター機能を説明する前に、管理画面の予約数の表示が変更になりましたのでお知らせします。

予約数の表示が変わりました

表示画像は管理画面の予約カレンダーになりますが、赤丸で記したようにそれまでは「予約人数 | 予約件数」を表示していましたが、本バージョンから「予約数 | 予約総数」となりました。

予約数には個別に指定日で調整した数字も計算対象となっています。また予約総数はスケジュール管理で増減設定した値も計算に含まれます。

この予約数や総数ですが、予約品目の制約タイプが人数の場合は予約人数の合計、件数の場合は予約件数の合計が表示されます。

その他、指定日での予約品目の予約数情報も少し変更して、スケジュール管理で増減を設定した場合の情報を追加しました。

予約自動返信のメール送信について

メールを送信する際、大きく次の4つ内容が組み合わされます。

  • 件名
  • 前文
  • 本文
  • 後文

この中で本文は予約品目の内容、予約者メールの設定、オプション機能などによりプログラムで組み立てられます。件名とメール内容(前文+本文+後文)を送信先の予約者、施設、モバイル指定、予約品目指定で指定された送信先に対してその内容を送信します。

ところでモバイル指定されたアドレスへの送信ですが、本文は内容が多いためこれまでは省略するようにしてありました。が、本バージョンからは施設宛と同様の内容を送信できるようにするフィルターを追加しました。後ほど解説します。

メッセージフィルター

メッセージフィルターは上記の件名・前文・後文の3つと、メール送信で組み込まれる送信元情報「from」の合わせて4つのフィルターが追加されました。

それぞれのフィルター関数に渡される情報は共通で、「元のデータ」と「ステータス情報」になります。ステータス情報には予約された対象品目の予約IDと送信先情報がセットされますので、送信先により内容を書き換えたい場合の条件として利用して下さい。。

以下に各メッセージフィルターの説明をします。

  1. mtssb_mail_booking_subject:件名
    件名を書き換えたいときに利用します。
  2. mtssb_mail_booking_header:前文
    前文を書き換えたいときに利用します。
  3. mtssb_mail_booking_footer:後文
    後文を書き換えたいときに利用します。
  4. mtssb_mail_booking_from:from
    送信元を変更したい場合に利用します。

前文、後文のそれぞれで、各種設定の予約メールのタグで解説されている以下の変数が利用できます。

  • %CLIENT_NAME%
    入力された名前です。
  • %RESERVE_ID%
    自動で付与される予約受付ID番号で予約メールに含めます。
  • %NAME%
    施設名(店舗名)です。
  • %POSTCODE%
    郵便番号です。
  • %ADDRESS%
    住所
  • %TEL%
    電話番号です。
  • %EMAIL%
    E-Mail
  • %WEB%
    WebサイトURLです。
 フィルター関数の指定と引数について

先に記した通り、フィルター関数に渡される引数は「元のデータ」と「ステータス情報」の2つあります。フィルター関数を functions.php に用意する場合、件名を例にした次のような指定をして下さい。

add_filter('mtssb_booking_mail_subject', 'booking_mail_subject', 10, 2);
function booking_mail_subject($str, $status) {
    :
}

引数 $str へは元のデータである件名が渡されますが、他のフィルター関数でもそれぞれのデフォルトで利用されるデータが渡されます。

次に $status の内容ですが、次の通りです。

$status = array(
    'article_id' => 予約品目のID,
    'receiver' => 送信先
}

配列が渡され、$status[‘article_id’]は予約品目のID、$status[‘receiver’]は送信先です。送信先は次の4つがあります。

  • client:予約者
  • admin:施設
  • article:予約品目指定
  • mobile:モバイル

例えば、予約品目IDが「125」で、予約品目に指定したメールアドレス先の「前文」を別のコメントにしたい場合、次のようにします。

add_filter('mtssb_mail_booking_header', 'mail_booking_header', 10, 2);
function mail_booking_header($str, $status) {
    if ($status['article_id'] == 125 && $status['receiver'] == 'article') {
        $message = <<<EOD
毎度お世話になっております。
弊社サイトから「%CLIENT_NAME%」様の予約を以下の通り承りましたのでよろしくお願いします。

EOD;
        return $message;
    }

    return $str;
}

その他、本バージョンよりモバイル宛も予約詳細を送ることができるようになりました。新しいフィルター「mtssb_mail_booking_mobile」を次のようなフィルター関数を設定してご利用下さい。

add_filter('mtssb_mail_booking_mobile', 'mail_booking_mobile');
function mail_booking_mobile($torf) {
    return true;
}

最後に「from」について例を示します。

この項目はメール送信サーバーに渡すデータですので、利用の仕方によって不具合を発生することがあります。利用した場合の不具合についてサポートはできませんのでご了承下さい。

add_filter('mtssb_mail_booking_from', 'mail_booking_from', 10, 2);
function mail_booking_from($from, $status) {
    if ($status['article_id' == 125 && $status['receiver'] == 'client') {
        return "From: ショップXX <shop@example.com>n";
    }
    return $from;
}

以上です。