予約キャンセルページ作成(その2)

前回記事予約キャンセルページ作成(その1)で、全ての予約を削除できるページを作成したが、今回はユーザーが予約時にパスワードを登録し、後で自分の予約だけを削除できるページの作成方法を記載する。

これが実現すれば、予約キャンセルの管理が基本的に不要になる。

MTS Simple Booking ビジネス版にもユーザーによる予約キャンセル機能があるが、悪意のあるアクセスでデータが削除されないように、安全を考えてメールからキャンセル処理する仕組みになっている。
しかし、ここでははじめにのページに書いたように、URLを知っている人だけが利用するサイトなのでパスワード入力欄をサイトに出した。

まず、予約時にパスワードを登録する仕組みを作った。
これは、以前の記事予約フォームの入力項目を追加の方法と基本的に同じなので、今回は説明を簡略にする。

必要な修正箇所は、mtssb-settings-admin.php に1か所、mtssb-booking-form.php に2か所、mtssb-booking.php に2か所の合わせて5か所。

まず、1か所目の修正
mtssb-settings-admin.php に下記の黄色にマークした行を挿入。

次に、2か所目の修正
mtssb-booking-form.php に下記の黄色にマークした部分を挿入。

次に、3か所目の修正
mtssb-booking-form.php の先ほどの記述より下の方のこの箇所に、下記の黄色にマークした部分を挿入。

次に、4か所目の修正
mtssb-booking.php に下記の黄色にマークした行を挿入。

最後、5か所目の修正
mtssb-booking.php で先ほどの記述より下の方のこの箇所に、下記の黄色にマークした行を挿入。

上記5か所の修正が終わったら、WordPress の管理画面の 予約システム → 各種設定 → 予約メール の入力項目設定で「Password」を「必須」にして「変更を保存」をクリックする。
pass2
これで入力項目に「パスワード」が追加された。
pass3

この後、mts-simple-booking.php の一番下に関数を追記するのだが、前回記事予約キャンセルページ作成(その1)と同様の注意事項がある。
前回記事の予約キャンセルページと前々回記事の予約リストのどちらも作成していない場合は、下記の3行を今回追記する関数の上に挿入しておく必要がある。

今回は下記の関数を、mts-simple-booking.php の一番下に追記する。

関数の内容についての留意事項は、前々回記事予約リストを表示する。の内容と同じなのでそちらを参照して欲しい。この記事では記載を省略する。
これで、ショートコード[yo_saku2]と書いた固定ページを作成すれば、下のようなパスワード入力欄が表示される。

pass1

ここに、予約時に入力したパスワードを記入して「送信」をクリックすると、該当する予約だけが削除ボタン付きで表示される。

cancel

「削除」をクリックすると、「この予約を本当に削除してもいいですか?」というダイアログが表示され「OK」をクリックすると予約が1件削除される。
dialog

サンプルサイトサンプル室予約サイト を作成してあるので、予約と予約キャンセルをご自由にどうぞ。


追記

パスワードだけでなく、名前とパスワードの両方を入力をしてもらう方法

mts-simple-booking.php の一番下に追記する関数を下記に変える

下のような名前とパスワード入力欄になる。

name_pass

ここに入力する、名前とパスワードの両方が合致する予約だけが削除ボタン付きで表示されるようになる。

  • このエントリーをはてなブックマークに追加

コメント

  1. 細井 より:

    先日はご回答ありがとうございます。

    たびたびの質問失礼いたします。
    こちらで参考にさせていただいたキャンセルフォームですが、
    名前とパスワードの両方が合わないと検索できないようにすることは可能でしょうか?

    よろしくお願いいたします。

  2. 細井 より:

    管理人様 ありがとうございます。
    ずっとネットと独習教科書のにらめっこしてもわからず・・・
    管理人様の力をお借りできて本当に助かっています。

    再度 本当にありがとうございます。

  3. 有田 より:

    いつも参考にさせていただいています。
    予約をキャンセルした際に、「キャンセル申込完了メール」を自動返信にて
    ユーザーへ送信することは可能でしょうか?

    ご教示の程よろしくお願い致します。

    • 管理人 より:

      こちらではメール送信なしで使用しているので詳しく調べたことがありません。
      お役に立てず、すいません。

  4. sakura より:

     数時間前に質問させていただいたものです。
     問題点事象に対する情報として、失念していたことを追記させていただきます。

    当該画面ページ外にはみ出したメッセージ(キャンセルのショートコードに対するメッセージ)は、キャッシュ、cookieクリア直後でも再現性があります。 また、PC、モバイルでも同様事象が発生します。
    予約なしでキャンセルすると当該ページに「現在予約はありません。」のメッセージが表示されると同時に、「現在予約はありません。現在予約はありません。」メッセージ1行が画面上部に表示されます。
    管理人様の所見が伺えたら幸いです。 宜しくお願いします。

    • 管理人 より:

      不可解な現象ですね。
      WordPressの他のプラグインと競合して動作がおかしくなっているような気がしますが、
      私は、あまり詳しくないのでよく分かりません。

  5. sakura より:

    回答いただきまして、ありがとうございます。

    追加テストの結果を報告させていただきますと、5名の予約登録後に”予約状況”を表示させると当該ページがスクロールダウンしW表示(5人×w=10人分)画面となります。
    スクロールアップすると当該ページに5人分の予約状況が表示されています。 
    現象としてはループに起因する問題と推測していますが、継続しテスト結果を報告させていただきます。
     当該ページの表示が正しいことがヒントになりそうです。

  6. sakura より:

     原因が判明しました。

    テスト用のサブドメインから起ち上げて、mts simple booking c もダウンロードからの設定、サイト保全のためプラグイン一括登録後のテストで再現性を確認し、プラグインを複数グルーピングして対象を絞りこみましたが、20個ほど使用していた中で最後に「有効化」を外したプラグインの影響であることを特定しました。
    Wordpressも推奨しているプラグインですので、興味があればプライベートでメールいただければ管理人様だけに限定でお知らせします。(本メールは公開されるため)
     本件の一報を予約一覧ページから送付しましたが、サードパーティ製の可能性をお断りしましたが、管理人さまの所見とも符合したことがテスト継続の契機となりました。

    管理人さまのご指南サイトの存在に感謝します。
    サイト閲覧者は共通して「有難い」と感じていると思います。

  7. 田中 より:

    いつも拝読、させて勉強させていただいております。無料版のカスタマイズで、予約ID、もしくは名前などの入力で予約キャンセルを行いたいのですが、
    可能でしょうか、勉強不足で申し訳ございませんが助言いただけると助かります。

    • 管理人 より:

      この記事が、無料版のカスタマイズで予約キャンセルできるようにする方法ですが。
      有料版では、セキュリティーに配慮した方法が備わっているようですので、不特定多数の人がご利用のサイトなら有料版の方がお勧めです。

  8. toyoda より:

    素晴らしいカスタム情報ありがとうございます。大変助かりました。
    公開して頂いているカスタムはほとんど一通り行いました。
    想定通りの状態になり、とても重宝しています。
    ありがとうございました!

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です