予約入力フォームへ入力された情報を、自動返信メールに掲載せず送信したい場合があります。その場合、新しく追加されたメッセージフィルターで実現できるようになりました。その他、内容を書き換えて送信したい場合もメッセージフィルターを利用して可能です。

図のような入力フォームで予約をした場合、以下のような自動返信メールが予約者と管理者へ送られます。

通常の自動返信メール内容

通常の自動返信メール内容

ここで、パスワードが表示されていますが、メールはインターネットの通信上では暗号化されていませんので、悪意ある利用者はのぞき見ることが可能です。余談ですが、特に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以外の場合、値が渡されてきませんのでご注意下さい。