予約入力フォームへ入力された情報を、自動返信メールに掲載せず送信したい場合があります。その場合、新しく追加されたメッセージフィルターで実現できるようになりました。その他、内容を書き換えて送信したい場合もメッセージフィルターを利用して可能です。
図のような入力フォームで予約をした場合、以下のような自動返信メールが予約者と管理者へ送られます。
ここで、パスワードが表示されていますが、メールはインターネットの通信上では暗号化されていませんので、悪意ある利用者はのぞき見ることが可能です。余談ですが、特にLAN上のパケットは簡単にキャプチャする事が可能です。
オプション項目を掲載しない
このメール内容を次のように、表示項目から落としてしまえば情報の漏洩を防ぐことが可能です。
これを実現するためのメッセージフィルターは
・option_confirm_output
です。それを利用した例が以下のプログラムです。
// オプション項目を書き換える add_filter('option_confirm_output', 'option_output', 10, 2); function option_output($bool, $opta) { if ($opta['mail'] && $opta['name'] == 'password') { return false; } return $bool; }
オプション項目を書き換える
項目の掲載はそのまま、以下の図のように表現を変更したい場合も同様、メッセージフィルター機能を利用すれば可能です。
書き換えはオプション項目のタイトル、内容、注記の3つが可能です。それらのメッセージフィルター名は
・option_confirm_label
・option_confirm_text
・option_confirm_note
です。以下がサンプルプログラムです。
// オプション項目を書き換える add_filter('option_confirm_label', 'confirm_label', 10, 2); function confirm_label($str, $opta) { if (isset($opta['mail']) && $opta['mail'] && $opta['name'] == 'password') { return '入力パスワード'; } return $str; } add_filter('option_confirm_text', 'confirm_text', 10, 2); function confirm_text($str, $opta) { if (isset($opta['mail']) && $opta['mail'] && $opta['name'] == 'password') { return '********'; } return $str; } add_filter('option_confirm_note', 'confirm_note', 10, 2); function confirm_note($str, $opta) { if (isset($opta['mail']) && $opta['mail'] && $opta['name'] == 'password') { return ' (セキュリティのため非表示)'; } return $str; }
目的とするオプション注文項目かどうかの判定は、管理画面で登録した「項目のキー名」がフィルター関数の2番目の引数配列に連想配列キー名「name」で渡されますので、それを比較して決定します。同じ連想配列のキー名「mail」は、mail送信時は「true」で渡されてきます。mail以外の場合、値が渡されてきませんのでご注意下さい。