投稿者「docadmin」のアーカイブ

予約メールのメッセージフィルターについて (旧題:Ver.1.33 予約メールのメッセージフィルター)

予約システムから送信するメールには次の5種類があります。

  • 予約メール
    予約フォームを送信して予約を受け付けたときに自動送信する
  • キャンセルメール
    キャンセルを受け付けたときに自動送信する
  • 予約完了メール
    管理者が予約リストから予約者へ予約確認メールを送信する
  • 予約通知メール
    CRON機能によりリマインダーのメールを自動送信する
  • ユーザー登録メール
    フロントエンドからユーザー登録フォームを利用してユーザー登録したとき送信する

本節は上記「予約メール」の送信前に設定されているメッセージフィルターについて、詳細を説明します。「メッセージフィルターとは」の説明は以下のページを参照してください。

メッセージフィルター

予約メール送信前に設定されているメッセージフィルターは、本システムのメール送信で利用するWordPressの「wp_mail()」に対して、「wp_mail()」に渡すパラメータの内容を変更する方法として利用します。

wp_mail()のパラメータと5つのメッセージフィルター

wp_mail()の説明は次のURLにあります。

wp_mail($to, $subject, $message, $headers, $attachements)

メッセージフィルターはパラメータ「$subject、$message、$headers、$attachements」に対して、内容を変更することができます。以下メッセージフィルターの一覧です。

  • mtssb_mail_booking_subject
  • mtssb_mail_booking_header
  • mtssb_mail_booking_footer
  • mtssb_mail_booking_from
  • mtssb_mail_booking_attachments

メッセージフィルターの引数と使い方

メッセージフィルター関数へ、2つの引数を渡します。1つは元の内容、もう1つは下記の配列で、予約品目のIDと送信先コードです。

$fParams = ['article_id' => xx, 'receiver' => yy]

送信先コードは次の通りです。

  • client
    予約者へ送信するメール
  • admin
    管理者へ送信するメール
  • mobile
    携帯電話へ送信するメール
  • article
    予約品目に設定されている送信先へ送信するメール

予約の件名を変更したい場合、用意するメッセージフィルター関数は次のようにします(プログラムはサンプルです)。リターン値がwp_mail()の$subjectに指定されます。

add_filter('mtssb_mail_booking_subject', 'mail_booking_subject', 10, 2);

function mail_booking_subject($subject, $fParams)
{
    return '件名の書き換え内容';
}

mtssb_mail_booking_headerとmtssb_mail_booking_footerについて

予約メールの本文は、「前文」、「予約内容」、「後文」を繋ぎ合わせてwp_mail()の$messageに渡します。

この前文と後文は管理画面の各種設定で指定したものが元になります。予約品目によって内容を変更したい場合、この「前文」や「後文」を書き換えることになります。

変更する文章には、「メール文の代替変数」を含めることができます。

WordPress 5.5で予約ボタンが操作できない場合の対処

利用規約の同意チェックボックスをチェックすると予約ボタンが操作できるようになりますが、WordPressを5.5にアップデート後、操作できるようにならない現象が確認されました。

対処は、この機能を操作する弊社提供のJavaScriptプログラムを修正し、動作するようしてください。

お手数をお掛けしますがよろしくお願いします。

js/mtssb-booking.jsファイルの修正

以下のプログラムが現在提供中(Ver.1.33.1)のソースです。

修正箇所は、赤丸で囲った部分のメソッド名「attr」を「prop」に修正してください。

修正後のプログラムは次の通りです。

var booking_form_operation = function($) {

	// 予約ボタンを利用できる・できないようにする
	$(document).ready(function() {
		// チェックボックスを操作されたときの処理
		$("#terms-accedence").change(function() {
			if ($(this).prop('checked')) {
				$("#action-button-cover").css('display', 'none');
			} else {
				$("#action-button-cover").css('display', 'block');
			}
		});

		// 初期設定
		if ($("#terms-accedence").attr('checked')) {
			$("#action-button-cover").css('display', 'none');
		}
	});
};

(200814)

修正ファイルは、製品のダウンロードページから入手いただけるよう用意しました。ダウンロードページは、ログイン後画面上部右側のユーザー名からプルダウンメニューを引き出しユーザーページを表示、製品名にリンクが設定されています。

https://app.mt-systems.jp

ユーザー登録について (旧題:Ver.1.33 ユーザーの登録)

WordPressサイトの運営で、ログインしたユーザーのみ表示するページを用意したいことがあります。ユーザー登録は、それを実現する第一歩となります。

ところでMTS Simple Bookingでは、住所や電話番号など最小限の個人情報をユーザーデータとして項目追加していますが、顧客管理機能は何もありません。そのため、特別な顧客にWeb上でサービスを提供する場合は、WordPressのユーザー管理機能を活用することになります。

本稿は、ユーザーの新規登録についてVer.1.33.0で改善しましたので、改めてユーザーの登録に関して解説したものですが、Ver.1.34以降も機能の改善が進められていますので、本項末に順次説明を追加して参ります。

WordPressのユーザー管理

WordPressサイトのユーザーにはサイトの「管理者」、記事の「編集者、投稿者、寄稿者、購読者」のロールが付与され、管理画面で操作できる機能が段階的に制限されるようになっています。

サイトに記事をアップしたり、更新するユーザー以外は、通常「購読者」として登録します。顧客管理で利用するならユーザー登録は「購読者」で登録し、操作はユーザー情報の更新のみとするのがよいでしょう。

またWordPressに、ログインユーザーだけが表示可能なページを用意する設定、はありません。そのようなページが必要な場合、自身で機能を用意するか、あるいは機能があるテーマやプラグインがあれば、それを利用することになります。

WordPress標準のユーザーの新規登録

ユーザー登録を希望する利用者を自動で登録できるようにするため、WordPressではログイン画面に「登録」ページへのリンクが設定されています。

この「登録」へのリンク表示は、管理画面の設定、一般タブページの中の「メンバーシップ」項目を「だれでもユーザー登録ができるようにする」にチェックする必要があります。

この設定によりログイン画面に「登録」リンクが表示され、クリックすると次のような新規登録画面が表示されます。

WordPressサイトのログインに関して

WordPressが標準で用意するログインは、URLで「wp-login.php」を指定したログイン画面からログインする、という方法です。

弊社ではこのログインに関して、ユーザー名とパスワード入力、及び、ログインボタンを表示する「ログインウィジェットプラグイン」をダウンロードいただけるように用意しております。

ご利用いただく場合の注意としまして、ご提供はGPLライセンスですので、ライセンスの範囲内でご利用ください。動作の保証は一切ございません。

プラグインのダウンロードページは、ログイン後表示いただけるユーザーページの下部にリンクがあります。

MTS Simple Bookingのユーザー登録

標準ではログイン画面のデザインが利用されているため、デザインされたフロントエンド画面とのギャップが大きく、違和感を感じます。また住所や電話番号など個人情報の入力項目は用意されていません。

そこで本システムではフロントエンド画面で新規登録できるように、入力フォームを含むユーザー登録機能を用意しました。

準備

ユーザー登録処理は、スラッグ名「mtssb-register」と名付けた固定ページを表示する処理ですべて行われます。このページを公開登録して表示すれば、プログラムにより入力・確認・登録・メール送信処理を実行することができます。

登録の条件

ユーザーのログイン名、メールアドレスの登録は、すべてWordPressの機能に依存しています。エラーは、WordPressのユーザー登録機能で判定された結果出力されます。

例えばWordPressのユーザー登録では、ユーザー名とメールアドレスの重複登録は許されていません。どちらか一方でも重複する場合はエラーとなり、登録されません。

また本機能では、ユーザー名に6文字未満、または32文字以上を指定するとエラーにしています。

登録の終了

確認画面で「登録する」ボタンを押すとユーザー登録が実行され、仮パスワードを記載したメールが送信されます。画面には次のメッセージが表示されます。

ユーザー登録を実行、仮パスワードをメール送信いたしました。

もし別途登録完了ページを表示したい場合、スラッグ名に「register-thanks」と名付けた固定ページを用意してください。終了後そのページへリダイレクトして表示します。

リダイレクトページへはGETパラメータとして「action=registerd」と「nonce=…」が渡されます。それ以外のパラメータはセットされていないため、改めて登録ユーザーの情報を表示することはできません。

ユーザー登録完了メール

登録完了のメール内容を変更したい場合、プラグインディレクトリにある「lib/MtssbUserForm.php」ファイルのメール文を含むメソッドの内容を直接編集してください。

この作業はPHPプログラムを編集するため、PHPプログラムについて理解していることが前提になります。プログラムの修正で不具合があると画面が白く表示されたり、エラーメッセージが出力される場合が発生します。

以前のバージョンの機能が削除されました

Ver.1.33より以前のユーザー登録において、入力項目を追加する機能が用意されていました。

この機能を利用するにはプログラムを編集することが前提でしたが、Ver.1.33においてそれらの機能はすべて削除されました。

Ver.1.34 フロントエンドのユーザー登録機能の改良

ユーザー登録フォームに「ユーザー利用規約」のチェック項目が用意されました。

上図「利用規約」フィールドは、「各種設定のその他」に必要な設定項目があります。

利用するユーザー項目の取捨選択

利用するユーザー項目の設定は、予約入力フォームの入力項目の設定を利用しています。設定は「各種設定の予約メール」にあります。

予約フォームの入力項目とユーザー登録の入力項目は、この設定が共通で参照されます。

ユーザー登録完了メールを管理者へ送信するには

本システムのフロントエンド機能を利用してユーザー登録が実行された場合、サイト管理者へは通知されません。

その通知を受け取る方法として、ユーザー登録完了メールの送信で「BCC」指定して管理者が受け取る方法を説明します。

この方法は本システムが用意するメッセージフィルター機能を利用し、メール送信するwp_mail()に渡すパラメータ「$headers」に情報を追加するものです。

wp_mail()のメール送信については、以下のページを参考にご覧ください。

予約メールのメッセージフィルター

メッセージフィルターはPHPプログラムを利用します。メッセージフィルターの説明は以下のページを参考にご覧ください。

メッセージフィルター

メッセージフィルター「mtssb_register_mail_header」の利用

ユーザー登録完了メールの送信前に、wp_mail()に渡すパラメータ「$headers」に管理者へ同じメールを送信するためのBCC情報を追加します。

add_filter('mtssb_register_mail_header', 'register_mail_header', 10, 1);

function register_mail_header($header) {
    $header[] = 'Bcc: admin@example.com <サイト管理者>';
    return $header;
}

「admin@example.com」と「サイト管理者」は、送信先メールアドレスと宛名を適宜設定してください。

ご注意:上記サンプルプログラムは、本記事追加掲載(2021-4-23)時点において動作確認しておりません。

メール文の代替変数一覧

メール文内に施設の設定情報や予約フォームで設定された情報など含めたいとき、代替変数を文章内に挿入します。それにより実際のメール文には、代替変数の値に置き換えられ、送信されます。

以下は最新版で利用可能な代替変数一覧です。

予約データ

  • %RESERVE_ID%
    予約ID
  • %BOOKING_DATE%
    予約日(年月日)
  • %BOOKING_TIME%
    予約時間(時分)
  • %BOOKING_NUMBER%
    予約人数
  • %BOOKING_NOTE%
    連絡事項

連絡先データ

  • %CLIENT_COMPANY%
    企業・団体名
  • %CLIENT_NAME%
    姓名
  • %CLIENT_SEI%
  • %CLIENT_MEI%
  • %CLIENT_FURIGANE%
    姓名フリガナ
  • %CLIENT_SEI_KANA%
    姓フリガナ
  • %CLIENT_MEI_KANA%
    名フリガナ
  • %CLIENT_EMAIL%
    E-Mailアドレス
  • %CLIENT_POSTCODE%
    郵便番号
  • %CLIENT_ADDRESS1%
    住所1
  • %CLIENT_ADDRESS2%
    住所2
  • %CLIENT_ADULT%
    大人人数
  • %CLIENT_CHILD%
    小人人数
  • %CLIENT_BABY%
    幼児人数

施設データ

  • %NAME%
    施設名
  • %POSTCODE%
    郵便番号
  • %ADDRESS%
    住所
  • %TEL%
    電話番号
  • %FAX%
    FAX番号
  • %EMAIL%
    メールアドレス
  • %WEB%
    ホームページURL

キャンセルメール

  • %CANCEL_URL%
    キャンセル実行URL

Ver.1.33 予約の確認とキャンセル

ビジネス版では、特定の固定ページを用意して予約情報を表示、確認することができます。この固定ページを表示すると次の図のように、予約の検索入力フォームが表示されます。

予約IDとメールアドレスを入力して予約データを検索します。過去の予約データは、検索の対象にはなりません。

検索の結果、予約があれば予約情報の詳細が表示されます。そしてその予約のキャンセルが有効であれば、キャンセルボタンが予約タイトル右側に表示されます。

それではこの機能を利用するための設定を見ていきましょう。

ページの準備

この機能を利用して予約の検索フォームや予約内容を表示するため、以下の特別なスラッグ名を設定した固定ページを用意してください。

  • subscription
    予約データの検索・表示、キャンセル処理に必要なページです。

その他、任意で次のスラッグ名を付けた固定ページを利用することができます。用意されていない場合はsubscriptionページが利用されます。

  • cancel-send
    キャンセル処理がメール方式のとき、キャンセルメール送信後にリダイレクト表示されるページです。固定ページが登録されていない場合、subscriptionページに簡単なメッセージ(※)が表示されます。
  • cancel-thanks
    キャンセルが実行された後にリダイレクト表示されるページです。固定ページが登録されていない場合、subscriptionページに簡単なメッセージ(※)が表示されます。

(※) メッセージは以下に説明するメッセージフィルターを利用して、出力内容を書き換えることができます。

利用方法

subscriptionページを表示すると予約の検索フォームが表示されます。予約IDとメールアドレスを入力した結果、予約データがあれば予約の内容が表示されます。

subscriptionページは、メインメニューなどに設定するとよいでしょう。

キャンセル

キャンセル機能は、キャンセルボタンを押した後に次の2つの操作方法が用意されています。

  1. キャンセルメールを送信し、メールに掲載されたURLアクセスでキャンセルする
  2. 確認ダイアログを表示し、キャンセルする

キャンセルの実行は、メールを送信してそのメールに記載されたURLをブラウザーでアクセスして実行する「メール方式」と、メールを送信せずそのまま実行する「ボタン実行」の2つの方法があります。

メールを送信する方法はそのまま実行する方法と比較して手間は多いですが、記載のURLをアクセスしなければキャンセルは実行されませんので、キャンセルを中止することができるメリットがあります。

デメリットは、キャンセルボタンを押したことでキャンセルが実行された、と勘違いする場合があります。

キャンセルが実行されると予約データがデータベースから削除されます。そのため予約を復元することはできません。同時に管理者へメールが送信されます。

管理画面の設定

キャンセル機能を有効にするには、管理画面でキャンセルを有効にし、予約品目でキャンセルの有効期限を設定します。

予約品目ではキャンセル有効期限を設定します。

キャンセル受付期限の設定は予約品目別に設定します。これにより、予約品目個別で期限を設定する、あるいはキャンセルを受け付けないようにすることができます。

キャンセルの受付期限は、予約日時を起点として3時間前から6日前まで設定できます。

このセレクトボックスの選択肢はメッセージフィルターを利用して変更することができます。

以下のセクションで説明するメッセージフィルターでパラメータを変更して、3時間前より短くする、あるいは7日前以上にすることができます。

キャンセルメール

メール方式を選択した場合、キャンセルを実行するためのURLを記載したメールが送信されます。このキャンセルメールの編集・登録は、管理画面の「各種設定-予約メールタブ」の下方にあります。

メールで利用する項目は「件名」と「本文」です。本文には「メール文で利用可能な代替変数」に掲載された代替変数を含むことができます。

なお本文には必ず「%CANCEL_URL%」を含めてください。この変数の代わりにキャンセルを実行するURLが挿入されます。

注)キャンセルメールの送信は、Ver.1.33.0までメール方式のみ予約者に送信されましたが、Ver.1.33.1よりボタン方式の場合もこのメールを送信するようになります。
(200716)

メッセージフィルター

表示される文言の内容や設定項目の変更など、次のメッセージフィルターを利用することができます。

キャンセル有効期限の選択肢変更

設定したいキャンセル有効期限が選択肢にない場合、メッセージフィルター「mtssb_cancel_limit_margin」を利用して追加、変更ができます。

以下のメッセージフィルター関数は、引数「$option」と同じ内容を戻しています。配列は「分 => 見出し」の形式で表します。

add_filter('mtssb_cancel_limit_margin', 'mts_cancel_select_option');
function mts_cancel_select_option($option) {
    return array(
        '0' => '利用不可',
        '180' => '3時間',
        '360' => '6時間',
        '720' => '12時間',
        '1440' => '1日',
        '2880' => '2日',
        '4320' => '3日',
        '5760' => '4日',
        '7200' => '5日',
        '8640' => '6日',
    );
}

例えば7日を追加したい場合、「’10080′ => ‘7日’」を6日の行の下に追加します。

検索フォーム

以下は検索フォームの表示出力で設定されているメッセージフィルター一覧です。

メッセージフィルター関数に渡されるデータは、それぞれ出力される文字列(ヌルストリング含む)です。書き換えたい内容を戻せば、その内容が出力表示されます。

処理実行(リダイレクト)後のメッセージ

キャンセルがメール方式の場合、キャンセルボタンを押すとメールを送信してページを切り替え(リダイレクト)します。

またキャンセルが実行された場合、キャンセル実行の表示ページへ切り替え(リダイレクト)します。

それぞれのメッセージフィルター名とデフォルトの出力内容は次の通りです。

  • subscription_cancel_send
    <p>キャンセルメールを送信しました。</p>
  • subscription_cancel_thanks
    <p>予約をキャンセルしました。</p>

メッセージフィルター関数を利用することで表示内容を変更することができます。

管理者通知メールの予約数情報追加

キャンセルが実行されると通知メールが管理者へ送信されます。そのメールの内容に、メッセージフィルターを利用して現在の予約数の情報を追加することができます。

機能の説明は以下のページを参照してください。

Ver.1.25 管理者宛予約・キャンセルメールへ予約数の情報を追加

後書き

この記事の内容はVer.1.33へのバージョンアップにおいて、以下のページを加筆、修正したものです。

Ver.1.8 予約のキャンセル