WordPress:「MW WP Form」でセレクトボックスやラジオボタンの選択項目によって送信先アドレスを変更する方法

WordPress:「MW WP Form」でセレクトボックスやラジオボタンの選択項目によって送信先アドレスを変更する方法

WordPressで確認・完了画面付きの問い合わせフォームを実装したいときに便利なプラグイン「MW WP Form」で、セレクトボックスやラジオボタンの選択項目によってそれぞれ異なるメールアドレス宛に送信されるようにする方法です。

ここでは「type」という項目名があり、それぞれ選択された場合は下記のように異なるメールアドレス宛に送信する動きとします。

  • 項目A → type-a@example.com 宛に送信
  • 項目B → type-b@example.com 宛に送信
  • 項目C → type-c@example.com 宛に送信

まず、フォーム作成画面では特別な記述などはせずに一般的な形でセレクトボックスやラジオボタンを配置し、上の項目名を設定する場合は、それぞれ下記のような形になると思います。
また、自動返信メールなどで項目Aや項目Bといった文言を表示させたいときは、いつも通り{type}のように設定部分に記述をしておけば表示させられます。

セレクトボックスの場合
[mwform_select name="type" children="項目A,項目B,項目C"]
ラジオボタンの場合
[mwform_radio name="type" children="項目A,項目B,項目C"]

項目を設置したら次は選択項目によって異なるメールアドレス宛に送信されるようにする処理で、プラグインで用意されているmwform_admin_mail_mw-wp-form-xxxというフックを使ってfunctions.phpへ下記のように記述します。

※フック名にあるxxxの部分は、自身が作成したフォームのkeyに併せて変更してください。

functions.php

add_filter( 'mwform_admin_mail_mw-wp-form-xxx', 'mwform_change_mail_recipient', 10, 3 );
function mwform_change_mail_recipient( $Mail, $values, $Data ) {
  $data_type = $Data->get( 'type' );
  switch ( $data_type ) {
    case '項目A':
      $Mail->to = 'type-a@example.com';
      break;
    case '項目B':
      $Mail->to = 'type-b@example.com';
      break;
    case '項目C':
      $Mail->to = 'type-c@example.com';
      break;
  }
  return $Mail;
}

今回は項目名が「type」なので$Data->get( 'type' )で送信されたデータを取得して、あとはその内容を条件にしてそれぞれのメールアドレスを$Mail->toに指定しています。

フォーム設置と上記コード記述後、実際に送信してみると選択した項目によってそれぞれ異なるメールアドレス宛に送信されるのを確認できます。

Close the search window,
please press close button or esc key.