フロントエンドの表示ページから予約ID、およびメールアドレスを入力して予約データの表示、確認ができるようになりました。また予約のキャンセルもできるようになりました。

キャンセル実行までの操作の流れは次のようになります。

  1. 該当する予約の検索・表示
    予約時に受け取ったメールに予約IDが記述されています。予約の内容を表示するため、その予約IDとメールアドレスを入力して該当する予約情報を表示します。
  2. キャンセル処理の開始
    キャンセルが可能であれば、予約タイトル行の右側にキャンセルボタンが表示されますので、そのボタンを押して確認ダイアログでOKを押します。
  3. キャンセルメール受信とキャンセル実行
    受け取ったキャンセルメールに、予約キャンセルを実行するためのURLアドレスが記述されています。そのURLをブラウザーで表示すると、当該予約がキャンセルされ予約データが削除されます。

キャンセル機能を追加するための準備

特定のスラッグ名を付けた固定ページを登録して下さい。以下にスラッグ名と表示の内容を説明します。

  • subscription
    予約データの検索、表示、キャンセル処理の中心となるページで必須です。
  • cancel-send
    キャンセルボタンが押されるとキャンセルメールが送信されます。このページはキャンセルメール送信後にリダイレクト表示されるページになります。ページが登録されていない場合は、プログラムにより簡単なメッセージ(※)が表示されます。
  • cancel-thanks
    予約者がキャンセルメールに記述されたURLアドレスをブラウザで開いたとき、キャンセルが実行された後にリダイレクト表示されるページになります。ページが登録されていない場合は、プログラムにより簡単なメッセージ(※)が表示されます。

(※)プログラムから出力されるメッセージは書き換えることができます。下の「フロントエンド表示のメッセージフィルター」に説明があります。

管理画面の設定

1.キャンセル受付の有効・無効

キャンセル受付の設定画面予約者がフロントエンドページから当該予約データを検索・表示することを、有効、または、無効に設定する選択項目が、各種設定の「予約パラメータ」タブ画面にあります。

無効を選択すると「subscription」ページが用意されていても、予約IDを入力する検索フォームは表示されません。

実際のキャンセルボタンの表示制御は、キャンセルを受け付ける期限の設定により決まります。その設定は「3.キャンセルの有効期限の設定」で説明します。

2.キャンセルメール

キャンセルメール設定画面キャンセル処理はデータベースに登録された予約データを削除します。そのため悪意のあるアクセスからデータが削除されないように、安全を考えてフロントエンドから直接削除せず、メールにキャンセル情報を送信して削除を実行する手続きとしました。

そのキャンセルメールに関して、メールの件名、および、メール内容を自由に編集できるように各種設定の「予約メール」タグのページに設定項目が用意してあります。

メールの内容は自由に変更できますが、キャンセル処理をするためのURLアドレスを埋め込むキーワード「%CANCEL_URL%」を、忘れずに含めて下さい。

キャンセルを実行するURLアドレスにはkeyパラメータが含まれています。キーパラメータは予約データのID、メールアドレス、wp-config.sysのAUTH_KEYを加えたハッシュコードが利用されます。

受け取ったキャンセル実行のためのURLは、キャンセル受付期限まで有効となります。

3.キャンセルの有効期限の設定

キャンセル有効期限設定画面キャンセルを受け付ける期限を、予約日から何日(何時間)前までであれば有効かを設定する項目が、予約品目の編集画面に用意してあります。ですので、キャンセル有効期限は予約品目ごと個別に設定できます。

選択肢には「利用不可」があります。これを選択すると、予約者が予約内容を確認するための表示だけにすることができます。

ところでキャンセル有効期限の選択肢は、メッセージフィルター機能を利用して書き換えることが可能です。

もし選択肢の中に設定したいものがなければ、メッセージフィルター機能を使って書き換えて下さい。

メッセージフィルター名は「mtssb_cancel_limit_margin」で、初期設定は次のような値になってます。

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日',
    );
}

時間は分を単位として表わしてます。

なお、予約IDから検索された予約データの参考画面は下の通りです。キャンセルボタンは予約日時と予約名称の右側に表示されます。

検索結果の予約データ表示画面

 

フロントエンド表示のメッセージフィルター

スラッグ名「subscription」ページに表示される確認入力フォーム画面において、それぞれの出力メッセージをフィルター機能を利用して書き換えることができます。

フィルター名は図の通りです。

can10mf

メッセージの書き換え方法は、機能ガイドのメッセージフィルターをご覧下さい。

この中の「confirmation_form_message」でのデフォルトは次のような内容になっております。

<span class="required">※</span>の項目は必須です。

タグの使用にご注意下さい。

リダイレクトページが用意されていない場合のメッセージの書き換え

利用者がキャンセルを実行するとスラッグ名「cancel-send」ページにリダイレクトしますが、当該ページが用意されていない場合はプログラムにより、「<p>キャンセルメールを送信しました。</p>」と出力します。

また、利用者が送られてきたキャンセルメールのURLをアクセスしてキャンセルが実行されると、スラッグ名「cancel-thanks」ページにリダイレクトされます。もし当該ページが用意されていなければプログラムにより、「<p>予約をキャンセルしました。</p>」と出力します。

それぞれ以下のフィルター名を利用して書き換えることができます。

  • 検索後のキャンセル実行
    subscription_cancel_send
  • キャンセルメールのURLアドレスアクセス
    subscription_cancel_thanks