MW WP Form で作成したフォームの送信先をカスタムフィールドでページごとに指定する
WordPressのメールフォーム作成プラグイン「MW WP Form」で作成したフォームでは、通常1つのフォームに対して送信先は固定です。
※送信先メールアドレス自体は複数設定できます。
複数ページに同じフォームを設置し、全て違う送信先にしようとしてもできません。
そこで、今回は同じフォームを使っていてもページごとに送信先を設定可能にするカスタマイズをご紹介します。
- ページごとに送信先を設定可能にする
- 手順1. プラグインをインストールして有効化
- 手順2. フォームを作成し、ショートコードをページ内任意の場所に記述
- 手順3. 送信先用カスタムフィールドを作成
- 手順4. フォームに至るリンクにポストIDを渡す
- 手順5. フォーム送信先を書き換える
- まとめ
ページごとに送信先を設定可能にする
「MW WP Form」で作成したフォームの場合、通常、同じフォームを使っていたら送信先は同じです。
ページによって送信先を変えたフォームを都度作成してもいいのですが、ページ数によっては複製作業も大変です。
今回ご紹介するカスタマイズでは、フォームを1つ作成し、同じフォームを使ってページごとに送信先を設定します。
ただし、参考サイトの記述では、ポストIDが取得できず全てフォームが1つ目の投稿に設定したカスタムフィールドのアドレス宛てに送信されます。
そこで、MW WP Form の URL引数を有効にしてURLからポストIDを渡す追加カスタマイズを行いました。
作業手順
- プラグイン「MW WP Form」と「Advanced Custom Fields」をインストールして有効化
- MW WP Form でフォームを作成し、ショートコードをページ内任意の場所に記述
- Advanced Custom Fields で送信先用カスタムフィールドを作成
- テンプレートを修正し、フォームに至るリンクにポストIDを渡す
- function.php にてフォーム送信先を手順3の入力内容に書き換える
手順1. プラグインをインストールして有効化
WordPressメニューのプラグインの新規追加より検索してインストールするか、下記よりダウンロードしてプラグインをインストールし、有効化します。
手順2. フォームを作成し、ショートコードをページ内任意の場所に記述
MW WP Form でフォームを作成し、URL引数を有効にします。
また、この時「URL設定」には何も入力しないでください。
今回は同じフォームを複数のページで使用します。そのため、「入力画面URL」を入力できません。「入力画面URL」のみURL入力を省略し「確認画面URL」「完了画面URL」「エラー画面URL」にURLを入力しますと、確認画面の戻るボタン([mwform_backButton])クリックで「このページには直接アクセスできません。」と表示されてしまいます。
もし、「GoogleAnalytics でメール送信完了のコンバージョンをとる」などの理由で、送信完了後に完了ページへ遷移したい場合はこちらをご利用ください。
- 共通利用する MW WP Form フォームを送信完了後に完了ページへ遷移する方法
- MW WP Form で作成したフォームを複数のページで共通で使用する場合、通常の設定では同一ページで完結させる必要があります。そこで、今回はメール送信完了後に完了ページに遷移する方法をご紹介…
- https://sendai-kuraso.com/work/wordpress/after-send-redirect.html
続いて、ページの任意の場所にショートコードを記述します。
この時、フォーム識別子のkey(数字のID)をどこかにメモしておきましょう。
手順3. 送信先用カスタムフィールドを作成
Advanced Custom Fields でフィールドグループを作成します。
フィールドラベルは「送信先メールアドレス」フィールド名は「acf_mail」とします。
※ラベルや名前は別に何でもいいので、自分でわかりやすい名前をつけてください。
フィールドタイプは「メール」でも「テキスト」でも問題ありません。お好きな方でどうぞ。
フィールドグループ公開後、ページ作成画面、もしくは編集画面を開くと「送信先メールアドレス」入力欄が表示されます。
このカスタムフィールドに送信先のメールアドレスを入力してください。
入力するメールアドレスをカンマ(,)で区切れば複数設定が可能です。
手順4. フォームに至るリンクにポストIDを渡す
テンプレートを修正し、フォームに至るリンクにポストIDを渡します。
フォームが固定ページにある場合
<a href="/contact/?post_id=<?php echo $post->ID; ?>">問い合わせ</a>
フォームが投稿ページ内にある場合
<a href="<?php the_permalink(); ?>?post_id=<?php echo $post->ID ?>"><?php the_title(); ?></a>
手順5. フォーム送信先を書き換える
function.php にフォーム送信先を書き換えるコードを記述します。
// mw-wp-form 送信先設定 function change_admin_address_mwform($Mail, $values, $Data) { $post_id = $_GET['post_id']; $field = get_post_meta($post_id, 'acf_mail', true); if($field){ $Mail->to = $field; } return $Mail; } add_filter('mwform_admin_mail_mw-wp-form-xxx', 'change_admin_address_mwform', 10, 3);
「acf_mail」となっている場所は、カスタムフィールドのフィールド名を入れてください。
「mwform_admin_mail_mw-wp-form-xxx」のxxxの部分は、先にメモったフォーム識別子のkey(数字のID)を入れてください。
まとめ
- MW WP Form でフォームを作成し、URL引数を有効にする
- Advanced Custom Fields で送信先メールアドレスを入力するフォールドを作成する
- フォームに至るリンクにポストIDを渡す
- function.php にフォーム送信先を書き換えるコードを書く
以上、MW WP Form で作成したフォームの送信先をカスタムフィールドでページごとに指定する方法をご紹介しました。
企業の紹介サイトで、お問い合わせフォームの内容が決まっている場合などに活用できると思います。
MovableType/WordPressを使ったホームページ制作、機能追加や設置代行などの改修、システム開発、サイトの保守を手掛けております。
アナタが実現させたい機能、やりたい事をお聞かせいただけませんか? そのイメージを一緒に実現しましょう!
お問い合わせは以下のページから!!