MW WP FORMで選択した項目ごとにメールアドレスを変更する

年明けましたね!2019年初のブログです。
明けましておめでとうございます!
今年もよろしくお願いします。

新年早々頭を悩ませたのがタイトルのとおり「MW WP FORM」で選択した項目ごとにメールアドレスを変更する」です。
これを実装するにあたっていろいろ問題がありましたので、そちらを今回まとめておきたいと思います。

まず、実装方法から!

MW WP FORMでフォームを作成する

通常通りメールフォームを作成していきます。


<div class="editBox">
<dl>
 	<dt>お問い合わせ項目</dt>
 	<dd>[mwform_select name="mw_type" id="mw_type" children="選択肢1,選択肢2,選択肢3,選択肢4"]</dd>
</dl>
<dl>
 	<dt>お名前<i>必須</i></dt>
 	<dd>[mwform_text name="mw_name" size="25" maxlength="25" placeholder="お名前"]</dd>
</dl>
<dl>
 	<dt>フリガナ<i>必須</i></dt>
 	<dd>[mwform_text name="mw_kana" size="25" maxlength="25" placeholder="フリガナ"]</dd>
</dl>
<dl>
 	<dt>メールアドレス<i>必須</i></dt>
 	<dd class="replace">[mwform_text name="mw_mail" placeholder="メールアドレス"]</dd>
</dl>
<dl>
 	<dt>メールアドレス<i>確認</i></dt>
 	<dd class="replace">[mwform_text name="mw_m_check" placeholder="確認のためもう一度入力してください"]</dd>
</dl>
<dl>
 	<dt>電話番号<i>必須</i></dt>
 	<dd class="replace">[mwform_text name="mw_tel" placeholder="電話番号"]</dd>
</dl>
<dl class="zip">
 	<dt>郵便番号</dt>
 	<dd class="replace">[mwform_text name="zip1" size="12" id="zip1"][mwform_text name="zip2" size="12" id="zip2"]<i>郵便番号を入力すると住所が自動的に入力されます。</i></dd>
</dl>
<dl>
 	<dt>ご住所</dt>
 	<dd class="replace">[mwform_text name="mw_address" placeholder="ご住所"]</dd>
</dl>

<dl>
 	<dt>お問合せ内容</dt>
 	<dd class="replace">[mwform_textarea name="message"]</dd>
</dl>
<div class="btnArea">
<div class="btn b-btn">[mwform_submitButton preview_value="確認画面へ" submit_value="送信する"]</div>
<div class="btn b-btn btnBack">[mwform_backButton value="戻る"]</div>
</div>
</div>

function.phpに以下の内容を書き込む

function autoback_my_mail( $Mail_raw, $values, $Data ) {
	if ($Data->get( 'mw_type' ) == '選択肢1'){
		$Mail_raw->to = 'test@nakweb.com';
	} else if ($Data->get( 'mw_type' ) == '選択肢2'){
		$Mail_raw->to = 'sample@nakweb.com';
	} else if ($Data->get( 'mw_type' ) == '選択肢4'){
		$Mail_raw->to = 'dummy@nakweb.com';
	} else{
		$Mail_raw->to = 'giraff@nakweb.com';
	}
	return $Mail_raw;
}
add_filter( 'mwform_admin_mail_mw-wp-form-XXX', 'autoback_my_mail', 10, 3 );

上記の方法では「選択肢4」はelseに含まれる方法をとっています。
mwform_admin_mail_mw-wp-form-XXXの”XXX”をMW WP Fromのショートコードに記載されてるフォーム識別子の数字を記載することでメールアドレスを項目ごとに分岐することができます。

上記のやり方がうまくいかなかった場合

上記でうまくいかなかった場合は以下のやり方を試してみてください。
function.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( 'mw_type' );
  switch ( $data_type ) {
    case '選択肢1':
      $Mail->to = 'test@nakweb.com';
      break;
    case '選択肢2':
      $Mail->to = 'sample@nakweb.com';
      break;
    case '選択肢3':
      $Mail->to = 'dummy@example.com';
      break;
    case '選択肢4':
      $Mail->to = 'giraff@example.com';
      break;
  }
  return $Mail;
}

多言語で複数メールフォームがあってそれぞれに対応させる場合、上記のやり方のほうがうまくいきました。
ただどちらのやり方も中国語(繁体・簡体)は英語や韓国語と一緒に行おうとするとうまくうごかなかったので
今後の課題となりそうです…。

みなさんもぜひ試してみてくださいね!