本節は上記「予約メール」の送信前に設定されているメッセージフィルターについて、詳細を説明します。「メッセージフィルターとは」の説明は以下のページを参照してください。
予約メール送信前に設定されているメッセージフィルターは、本システムのメール送信で利用するWordPressの「wp_mail()」に対して、「wp_mail()」に渡すパラメータの内容を変更する方法として利用します。
wp_mail()の説明は次のURLにあります。
► wp_mail($to, $subject, $message, $headers, $attachements)
メッセージフィルターはパラメータ「$subject、$message、$headers、$attachements」に対して、内容を変更することができます。以下メッセージフィルターの一覧です。
メッセージフィルター関数へ、2つの引数を渡します。1つは元の内容、もう1つは下記の配列で、予約品目のIDと送信先コードです。
$fParams = ['article_id' => xx, 'receiver' => yy]
送信先コードは次の通りです。
予約の件名を変更したい場合、用意するメッセージフィルター関数は次のようにします(プログラムはサンプルです)。リターン値がwp_mail()の$subjectに指定されます。
add_filter('mtssb_mail_booking_subject', 'mail_booking_subject', 10, 2); function mail_booking_subject($subject, $fParams) { return '件名の書き換え内容'; }
予約メールの本文は、「前文」、「予約内容」、「後文」を繋ぎ合わせてwp_mail()の$messageに渡します。
この前文と後文は管理画面の各種設定で指定したものが元になります。予約品目によって内容を変更したい場合、この「前文」や「後文」を書き換えることになります。
変更する文章には、「メール文の代替変数」を含めることができます。
]]>対処は、この機能を操作する弊社提供のJavaScriptプログラムを修正し、動作するようしてください。
お手数をお掛けしますがよろしくお願いします。
以下のプログラムが現在提供中(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)
修正ファイルは、製品のダウンロードページから入手いただけるよう用意しました。ダウンロードページは、ログイン後画面上部右側のユーザー名からプルダウンメニューを引き出しユーザーページを表示、製品名にリンクが設定されています。
]]>ところでMTS Simple Bookingでは、住所や電話番号など最小限の個人情報をユーザーデータとして項目追加していますが、顧客管理機能は何もありません。そのため、特別な顧客にWeb上でサービスを提供する場合は、WordPressのユーザー管理機能を活用することになります。
本稿は、ユーザーの新規登録についてVer.1.33.0で改善しましたので、改めてユーザーの登録に関して解説したものですが、Ver.1.34以降も機能の改善が進められていますので、本項末に順次説明を追加して参ります。
WordPressサイトのユーザーにはサイトの「管理者」、記事の「編集者、投稿者、寄稿者、購読者」のロールが付与され、管理画面で操作できる機能が段階的に制限されるようになっています。
サイトに記事をアップしたり、更新するユーザー以外は、通常「購読者」として登録します。顧客管理で利用するならユーザー登録は「購読者」で登録し、操作はユーザー情報の更新のみとするのがよいでしょう。
またWordPressに、ログインユーザーだけが表示可能なページを用意する設定、はありません。そのようなページが必要な場合、自身で機能を用意するか、あるいは機能があるテーマやプラグインがあれば、それを利用することになります。
ユーザー登録を希望する利用者を自動で登録できるようにするため、WordPressではログイン画面に「登録」ページへのリンクが設定されています。
この「登録」へのリンク表示は、管理画面の設定、一般タブページの中の「メンバーシップ」項目を「だれでもユーザー登録ができるようにする」にチェックする必要があります。
この設定によりログイン画面に「登録」リンクが表示され、クリックすると次のような新規登録画面が表示されます。
WordPressが標準で用意するログインは、URLで「wp-login.php」を指定したログイン画面からログインする、という方法です。
弊社ではこのログインに関して、ユーザー名とパスワード入力、及び、ログインボタンを表示する「ログインウィジェットプラグイン」をダウンロードいただけるように用意しております。
ご利用いただく場合の注意としまして、ご提供はGPLライセンスですので、ライセンスの範囲内でご利用ください。動作の保証は一切ございません。
プラグインのダウンロードページは、ログイン後表示いただけるユーザーページの下部にリンクがあります。
標準ではログイン画面のデザインが利用されているため、デザインされたフロントエンド画面とのギャップが大きく、違和感を感じます。また住所や電話番号など個人情報の入力項目は用意されていません。
そこで本システムではフロントエンド画面で新規登録できるように、入力フォームを含むユーザー登録機能を用意しました。
ユーザー登録処理は、スラッグ名「mtssb-register」と名付けた固定ページを表示する処理ですべて行われます。このページを公開登録して表示すれば、プログラムにより入力・確認・登録・メール送信処理を実行することができます。
ユーザーのログイン名、メールアドレスの登録は、すべてWordPressの機能に依存しています。エラーは、WordPressのユーザー登録機能で判定された結果出力されます。
例えばWordPressのユーザー登録では、ユーザー名とメールアドレスの重複登録は許されていません。どちらか一方でも重複する場合はエラーとなり、登録されません。
また本機能では、ユーザー名に6文字未満、または32文字以上を指定するとエラーにしています。
確認画面で「登録する」ボタンを押すとユーザー登録が実行され、仮パスワードを記載したメールが送信されます。画面には次のメッセージが表示されます。
ユーザー登録を実行、仮パスワードをメール送信いたしました。
もし別途登録完了ページを表示したい場合、スラッグ名に「register-thanks」と名付けた固定ページを用意してください。終了後そのページへリダイレクトして表示します。
リダイレクトページへはGETパラメータとして「action=registerd」と「nonce=…」が渡されます。それ以外のパラメータはセットされていないため、改めて登録ユーザーの情報を表示することはできません。
登録完了のメール内容を変更したい場合、プラグインディレクトリにある「lib/MtssbUserForm.php」ファイルのメール文を含むメソッドの内容を直接編集してください。
この作業はPHPプログラムを編集するため、PHPプログラムについて理解していることが前提になります。プログラムの修正で不具合があると画面が白く表示されたり、エラーメッセージが出力される場合が発生します。
Ver.1.33より以前のユーザー登録において、入力項目を追加する機能が用意されていました。
この機能を利用するにはプログラムを編集することが前提でしたが、Ver.1.33においてそれらの機能はすべて削除されました。
ユーザー登録フォームに「ユーザー利用規約」のチェック項目が用意されました。
上図「利用規約」フィールドは、「各種設定のその他」に必要な設定項目があります。
利用するユーザー項目の設定は、予約入力フォームの入力項目の設定を利用しています。設定は「各種設定の予約メール」にあります。
予約フォームの入力項目とユーザー登録の入力項目は、この設定が共通で参照されます。
本システムのフロントエンド機能を利用してユーザー登録が実行された場合、サイト管理者へは通知されません。
その通知を受け取る方法として、ユーザー登録完了メールの送信で「BCC」指定して管理者が受け取る方法を説明します。
この方法は本システムが用意するメッセージフィルター機能を利用し、メール送信するwp_mail()に渡すパラメータ「$headers」に情報を追加するものです。
wp_mail()のメール送信については、以下のページを参考にご覧ください。
メッセージフィルターはPHPプログラムを利用します。メッセージフィルターの説明は以下のページを参考にご覧ください。
ユーザー登録完了メールの送信前に、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)時点において動作確認しておりません。
]]>以下は最新版で利用可能な代替変数一覧です。
予約IDとメールアドレスを入力して予約データを検索します。過去の予約データは、検索の対象にはなりません。
検索の結果、予約があれば予約情報の詳細が表示されます。そしてその予約のキャンセルが有効であれば、キャンセルボタンが予約タイトル右側に表示されます。
それではこの機能を利用するための設定を見ていきましょう。
この機能を利用して予約の検索フォームや予約内容を表示するため、以下の特別なスラッグ名を設定した固定ページを用意してください。
その他、任意で次のスラッグ名を付けた固定ページを利用することができます。用意されていない場合はsubscriptionページが利用されます。
(※) メッセージは以下に説明するメッセージフィルターを利用して、出力内容を書き換えることができます。
subscriptionページを表示すると予約の検索フォームが表示されます。予約IDとメールアドレスを入力した結果、予約データがあれば予約の内容が表示されます。
subscriptionページは、メインメニューなどに設定するとよいでしょう。
キャンセル機能は、キャンセルボタンを押した後に次の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日の行の下に追加します。
以下は検索フォームの表示出力で設定されているメッセージフィルター一覧です。
メッセージフィルター関数に渡されるデータは、それぞれ出力される文字列(ヌルストリング含む)です。書き換えたい内容を戻せば、その内容が出力表示されます。
キャンセルがメール方式の場合、キャンセルボタンを押すとメールを送信してページを切り替え(リダイレクト)します。
またキャンセルが実行された場合、キャンセル実行の表示ページへ切り替え(リダイレクト)します。
それぞれのメッセージフィルター名とデフォルトの出力内容は次の通りです。
メッセージフィルター関数を利用することで表示内容を変更することができます。
キャンセルが実行されると通知メールが管理者へ送信されます。そのメールの内容に、メッセージフィルターを利用して現在の予約数の情報を追加することができます。
機能の説明は以下のページを参照してください。
► Ver.1.25 管理者宛予約・キャンセルメールへ予約数の情報を追加
この記事の内容はVer.1.33へのバージョンアップにおいて、以下のページを加筆、修正したものです。
]]>