パイプを使って送信先を選択可能に

あなたが会社のサイトのウェブマスターになった場面を想像してください。そのサイト上に、送信者が宛先を選択できる仕組みのコンタクトフォームを設置することになったとしましょう。わかりやすい例として会社の CEO (ceo@example.com)、営業担当(sales@example.com)、サポート担当(support@example.com) の3つから宛先を選択できることにします。

こういったコンタクトフォームは、Contact Form 7 の基本的な機能を使っても実現することは可能でした。まずドロップダウンメニューかラジオボタンを設置して(つまり次のようなフォームタグをフォームのテンプレート内に挿入するわけですが):

[select your-recipient "ceo@example.com"
                    "sales@example.com"
                    "support@example.com"]

次にこれに対応するメールタグ [your-recipient]宛先: の項目に入力します。こうすることでメールは送信者が選んだアドレスに送信されることになります。

ところが、これには問題がありまして、この方法を用いた場合、選択するメールアドレスがインターネットに公開されることになり、簡単にスパムのターゲットにされてしまうという好ましくない事態を招いてしまいます。

というような事情で、データは公開したくないがそのデータを選択対象としては使いたいというニーズを安全に満たす必要が出てきたわけですが、パイプ (‘|’) のサポートはまさにこの目的のためにあるのです。

先述のドロップダウンメニューのタグを次のように変更しましょう:

[select your-recipient "CEO|ceo@example.com"
                    "Sales|sales@example.com"
                    "Support|support@example.com"]

オプションの値の中でパイプ文字 (‘|’) が使われている場合、外部に公開されるのはパイプより前の部分だけになり、一方メールの中で使われるのはパイプより後の部分になります。

pipe sample

パイプ文字より後の値を得るには、フォームタグに対応した通常のメールタグ(上の例の場合では [your-recipient])をメールのテンプレートに設置します。パイプより前の値を得るには、[_raw_{項目名}](上の例の場合では [_raw_your-recipient])が使えます。

パイプをこの機能で使うことができるのはドロップダウンメニュー、ラジオボタン、チェックボックスの場合に限られます。もしこの機能が好きにはなれなくて無効にしたい場合は、WPCF7_USE_PIPE 定数を false として定義すればそうなります。

Just another contact form plugin for WordPress. Simple but flexible.