Contact Form 7で生成されるフォームの中に、ログイン中ユーザーのメールアドレスを挿入する方法をご紹介します。(Contact Form 7のバージョン4.6以降)
会員サイトを運営している場合などには、サポートフォームを用意した場合には、ユーザーの手間を省き入力ミスが防げます。運営側としても利用者をメールアドレスから正確に把握することが可能です。フォームに使うショートコードを作るには、
カスタムコードをwpcf7_add_form_tag関数(WPCF7_FormTagクラス)を使ってfunctions.phpに定義します。
また、メールに挿入するショートコードはContact Form 7が用意してくれている「特別なメールタグ」を利用します。

Contact Form 7で作成されるフォーム中にログインユーザーのメールアドレスを表示させる

WordPressで運用している会員サイトのお問い合わせフォームに、わざわざメールアドレスを入力してもらわずに自動的にログイン中の会員の登録済みメールアドレスを使いたいと思いました。

会員様の手間が省けるのもありますが、自動入力により入力ミスが起きないことが大きなメリットです。

また、会員サイト運営側からすると登録されたメールアドレスからお問い合わせが来ますので、会員様を正確に特定できるメリットもあります。

Contact Form 7用のショートコードを作る

お問い合わせフォームは、Contact Form 7(以降CF7と表記)で作っています。

そのためフォームの作成にはショートコードを使う必要があります。

また、フォームとは別にメール送信には別のショートコードを使う必要があります。

1. CF7フォーム用のショートコードを作る

1.CF7のフォームに使う独自ショートコードを作成する

CF7のWPCF7_FormTagクラスを使ってカスタムコードを作成します。

functions.phpに「wpcf7_add_form_tag」という関数を使って、以下の様な方法でログイン中のユーザーのメールアドレスを取得するショートコードを作成しました。

これで、ショートコード”[login_user_email]”でCF7のフォーム内に表示させることが可能です。

これで、ショートコード”[login_user_email]”でCF7のフォーム内に表示させることが可能です。

このような感じでフォームにショートコードを貼り付け、実際の表示はこのようになります。

(注)wpcf7_add_shortcode()などは非推奨

ネット上には古い情報で説明しているページがたくさんあって、wpcf7_add_shortcode()関数などのWPCF7_Shortcodeクラスを使った方法を紹介しているページがたくさんあります。

CF7のver4.6からWPCF7_Shortcodeクラスは廃止予定につき使用が非推奨になっています。

そのためカスタムコードを作成する場合は、WPCF7_ShortcodeではなくWPCF7_FormTagを使うようにすべきです。

あなたの現在利用中のCF7のバージョンも確認して4.6以降に変更してから上記コードを使ってください。

2. 自動返信メールに使うショートコードが使えるようにする

当然ですが、CF7が送信してくれるメールにも、フォームに表示させたものと同じメールアドレスを自動に入れる必要があります。

メールには、CF7が用意してくれている「特別なメールタグ」というものが使えます。

参考サイト:https://contactform7.com/ja/special-mail-tags/

この中にある「ユーザー関連の特別なメールタグ」の”[_user_email]”を使うと、ログイン中のユーザーのメールアドレスを表示させることができます。

このタグを使う際には、重要なポイントがあります。

それはCF7の設定画面の”その他の設定”で「subscribers_only: true」を設定することです。

私の場合は、これを設定しないと[_user_email] などの「特別なメールタグ」の「ユーザー関連の特別なメールタグ」が一切表示されず、解決するまでにずいぶんと時間を取りました。

参考サイト:https://contactform7.com/ja/additional-settings/