【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プラグイン情報
    【タグ】 - , ,

      関連記事

    【WordPress】Table of Contents Plusの誤動作例~特殊文字『>』が見出しに入ると表示が崩れる
    WordPressサイトに、コメント機能を実装しない/非表示にする方法
    baserCMS(ベーサーシーエムエス)でサイト制作してみる1~インストールやSSL・テーマ設定
    【WPプラグイン】WordPress5.0以降のブロックエディタ使いたくない場合→Classic Editorプラグインで旧エディタに戻して記事を書こう
    【悲報】アメブロがヤバい(特に無料プラン・スマホレイアウト)書いても書いても売れないのは何故?
    baserCMS(ベーサーシーエムエス)サイト制作2~テーマCSSやパーツPHP編集でデザイン
    googleカレンダーとメールフォームで、予約受付ってできるの?iframeレスポンシブに気をつけて
    cssフレームワーク利用サイトで、意図しないpaddingなどを消すには?→同クラス上書き(例:bootstrap)
    【WPプラグイン】Smart Custom FieldsとCustom Field Bulk Editorは相性悪い?(空リンク・真偽値フィールドに文字)
    ワードプレスホームページ制作『ブログ記事投稿ページ・固定ページ』使い分け
    【おすすめWordPressテーマ】Maxwell~シンプル・洗練されたブログメディア向きテーマ・スライダーやレイアウト変更も簡単
    googleアドセンス広告で、競合他社の広告を自社サイトに表示させない方法