【WP/contact form 7】$_POST変数の中身で判定して、『メール送信ありがとうページ』に遷移させる方法

      2022/04/26   2845文字

今回は、WordPressのお馴染みプラグイン『contact form 7』を取り上げます。便利とはいえ、『送信後の機能(転送や表示)が微妙』みたいな難点があります。そのうちの一つ『送信後、メール送信ありがとうページへの遷移』を取り上げます。ちょっとテクニカルに『$_POST』を判定します。さっそく確認していきましょう。

WP/contact form 7の、送信後の問題点っぽいポイント

さて、先日・・

こういうのをtwitterに投下していた管理人です。当時、お取引先さまと『メール送信ありがとうページ』のことを話していたほか、contact form 7プラグインで『微妙じゃね?』って気になっていたことがあったわけです。その内容は以下の通りです。

『on_sent_ok』が、新しいバージョンでは廃止されている

contact form 7で、送信後に『ページ移動』をされるときによく使われていたものが、『on_sent_ok』でした。urlを指定して、送信成功後に任意のページにリダイレクトできました。


しかし、現在バージョンではこれを書くとエラー警告が出るうえ、廃止がアナウンスされました。非推奨機能を使っていて、なんかエラーとか出たら大変ですからね。

response表示が味気ない(人によります)

あとは、デフォルトでついてきている機能、response。メッセージを管理画面から変更するほか、タグで位置を調整したり、CSSを追加したりするカスタマイズは行われますが・・・

味気ない&文字サイズによっては、送信完了がわかりにくいかもしれません。

WP/contact form 7で送信したときの$_POSTの中身

で、『メール送信ありがとうページをつけてみる』ということで、転送判定に使えそうなものを見つけました。『contact form 7で送信したときの$_POST』です。確認のしかた方はカンタンで、PHPファイル部分に『var_dump($_POST);』を書いて、メールを送信するだけ。


こんな感じで配列が出てきます。例えば『電話番号の欄にアルファベット入れた』や『必須フィールドが入っていない』という場合はメールが送られていないけど、途中まで入力した内容自体は、$_POSTに格納されています。

フォームのバージョン(key:_wpcf7_version)やid(key:_wpcf7)みたいなメタ情報は空でも出てくるけど、ユーザー入力内容が入る部分が『your-name,your-email,your-subject,your-message』です。これは、このサイトのメールフォームで指定した内容です。POSTメソッドについては、以下のリンクもご確認ください。

contact form 7の$_POST変数の中身で判定して、『メール送信ありがとうページ』に遷移させる方法

まずは、送信後の飛び先になるページを作っておく


こんな感じで、このサイトのテスト用ディレクトリに、適当にhtmlファイルをアップして、『メール送信ありがとうページ』を作っておきます。少し変化をつけるためにイラストを使いました。

なお、画像はイラストACさんよりお借りしました。描ける人は、自分で描いても楽しいでしょう。オリジナル感の強いサイトになりますしね。

フォームを準備し、判定に使うタグ名を押さえておく


そのあとは、管理画面からフォームを準備します。textなどの後についている『*』は、必須項目という意味です。今回はシンプルに、『入力必須のyour-name,your-subject,your-messageの3項目が入力されていた場合、送信されたと判定』というような条件を入れてみましょうか。

(*実際に運用する場合は『メールアドレスや電話番号形式をpreg_matchでチェック』『フォームに桁数制限』『半角カナなどのチェック』『記号などをハネる』のように、ページ遷移条件が複雑になります。)

条件にマッチしたときに、転送プログラムが出力されるようにする


カンタンに説明すると、
『記事idが9309番(この記事)』かつ(&&)
『$_POSTが空ではない(!は否定演算子)』かつ
『必須のyour-nameが空ではない』かつ
『必須のyour-subjectが空ではない』かつ
『必須のyour-messageが空ではない』

という条件で、ページ遷移スクリプトが出力されます。これで『on_sent_ok』無しでも送信後移動ができるはず。

ただし、PHPのemptyは、$var=0などもtrue判定となるようです。0が選択肢になる場合は気をつけたほうがいいかも。

WP/contact form 7転送、実際に使ってみましょう




    こちらはテスト用なので、メールアドレス入力欄はつけませんでした(送信ボタンを押しても、返信メールは届きません)。とりあえず適当に入力して、3つのフィールドが埋まれば、遷移するという点をご確認ください。

    あとがき・まとめ

    • contact form 7の『on_sent_ok』は、新しいバージョンでは廃止
    • response表示はあるけど、少し味気ない
    • $_POST変数のユーザー入力フィールドで判定して、メールありがとうページに飛ばすことができる

    まとめると、このようなところでしょうか。実際の運用の場合は、安全面や、わけわからない飛び方を避ける点を考えて、条件を複雑にします。
    (エスケープ処理とかも慣れてくると、自分でフォーム作ったほうが早いような気が、しないでもないです笑)

    WordPressサイト制作&リニューアル・機能開発サービス | アトリエSS


    【カテゴリ】 - webサイト制作関連, WordPressプラグイン情報
    【タグ】 - , ,

      関連記事