ハシウェブ

Web制作、プログラミングに関する情報を発信するブログ

MW WP Form で管理者宛メールを複数の送信先に振り分ける方法【WordPressプラグイン】

MW WP Form で管理者宛メールを複数の送信先に振り分ける方法【WordPressプラグイン】

「WordPressのMW WP Formでひとつのメールフォーム設定で複数の送信先に振り分けたい」

悩み

こんな悩みにお答えします。

じつは、MW WP Formで用意されているフィルターフック「mwform_admin_mail_raw_mw-wp-form-xxx」を使うことで実現できます。

この記事では、「mwform_admin_mail_raw_mw-wp-form-xxx」の使い方について解説します。

私は、2015年からWeb制作の仕事をはじめて、170件ほどのWebサイトを制作しており、多くのノウハウを得ることができました。
Webサイト制作のほとんどでWordPressを使用しており、MW WP Formを使ったメールフォームも多く設置しています。

記事を読み終えると、送信先が複数になるメールフォームを1つの設定で実現することができ、Webサイトの制作、保守管理の効率化をすることができます。

目次
  1. MW WP Form で管理者宛メールを複数の送信先に振り分ける方法
    1. 問い合わせフォームへのリンクにパラメータ(URL引数)を設定する
    2. MW WP Formの設定「URL引数を有効にする」をチェックする
    3. functions.phpにフィルターフック「mwform_admin_mail_raw_mw-wp-form-xxx」の処理を設定する
  2. まとめ

MW WP Form で管理者宛メールを複数の送信先に振り分ける方法

メール送信先の振り分けるパターンはいろいろあると思いますが、パラメータ(URL引数)を使った方法で解説します。

  • 問い合わせフォームへのリンクにパラメータ(URL引数)を設定する
  • MW WP Formの設定「URL引数を有効にする」をチェックする
  • functions.phpに「mwform_admin_mail_raw_mw-wp-form-xxx」の処理を設定する

問い合わせフォームへのリンクにパラメータ(URL引数)を設定する

問い合わせ送信先が少ない場合は以下のようにHTMLを手入力します。

問い合わせフォームのURLにパラメータを追加して、どこに送信するかを指定しておきます。

WordPressの登録ユーザーとは関係ないメールアドレスに送信する場合はどんな指定でもかまいません。

WordPressの登録ユーザーに送信する前提だと、送信先はユーザー名(user_login)を指定します。

<ul class="user-list">
  <li class="">
    <a class="" href="https://example.jp/contact?user=takayama">担当:高山</a>
  </li>
  <li class="">
    <a class="" href="https://example.jp/contact?user=kani">担当:可児</a>
  </li>
  <li class="">
    <a class="" href="https://example.jp/contact?user=ono">担当:大野</a>
  </li>
</ul>

WordPressの投稿者権限に問い合わせ送信先のユーザーを登録する場合は、以下のようにすると送信先ユーザーの変更、追加、削減があったとしても自動で更新することができます。

<?php
  $args["role"] = "author";   

  $user_query = new WP_User_Query( $args );
  //var_dump( $user_query->results );

  if( !empty( $user_query->results ) ){
?>
    <ul class="user-list">
<?php
    foreach( $user_query->results as $key => $user ){
      //var_dump($user);
?>
      <li class="">
        <a class="" href="<?php echo esc_url( home_url( "contact" ) . "?user=". $user->user_login ); ?>">
          担当:<?php echo esc_html( $user->display_name ); ?>
        </a>
      </li>
<?php
    }
?>
    </ul>
<?php
  }
?>
  $args["role"] = "author";

  $user_query = new WP_User_Query( $args );

WP_User_Query でWordPressに登録されているユーザー一覧を取得できます。

$args["role"] = "author"; で、投稿者権限(author)を指定しています。

もっと詳細な絞り込み、順番指定がある場合は、$argsの指定を増やしていきます。

MW WP Formの設定「URL引数を有効にする」をチェックする

WordPress管理画面のMW WP Formにて、「URL引数を有効にする」に✅をします。

これでURL引数(パラメータ)が有効になります。

URL引数を有効にしていないとパラメータが受け取れないか、メールフォームの確認画面、完了画面へのページ遷移時に不具合がおこります。

MW WP Form 設定 URL引数を有効にする

functions.phpにフィルターフック「mwform_admin_mail_raw_mw-wp-form-xxx」の処理を設定する

<?php
/**
 * mwform_admin_mail
 * @param MW_WP_Form_Mail $Mail_raw
 * @param array $values
 * @param MW_WP_Form_Data $Data
 */
function mwform_admin_mail( $Mail, $Data ) {
  if( isset( $_GET["user"] ) ){
    $user = $_GET["user"];

    $author = get_user_by("slug", $user);

    if( $author ){
      $author_email = $author->user_email;
      $Mail->to = $author_email;

      $Mail->subject .= "(" . $author->display_name . "へのお問い合わせです)";
    }
  }

  return $Mail;
}
add_filter( "mwform_admin_mail_mw-wp-form-830", "mwform_admin_mail", 10, 2 );
?>
add_filter( "mwform_admin_mail_mw-wp-form-830", "mwform_admin_mail", 10, 2 );
MW WP Form フォーム識別子

add_filterの第1引数に「 mwform_admin_mail_raw_mw-wp-form-xxx 」の、xxxWordPress管理画面のMW WP Form フォーム識別子のkeyの値を指定します。

画像の場合であれば「 830 」ですが、これは毎回違うのでコピペするときなどは書き換えを忘れないようにしてください。

function mwform_admin_mail( $Mail, $Data ) {
}

add_filterの第2引数には、関数名(functionの次についている名前)を指定します。
わかりやすい名前をつければ大丈夫です。

if( isset( $_GET["user"] ) ){
}

URLにパラメータがあるかを判定します。

$user = $_GET["user"];

$_GET["user"]の値を$userに格納します。

$author = get_user_by("slug", $user);

get_user_by 」で、$userの値(user_login、slug)から、userが持っているデータすべてを取得します。
これを$authorに格納します。

if( $author ){
}

user登録があるかを判定します。

$author_email = $author->user_email;
$Mail->to = $author_email;

userに登録されているメールアドレスを管理者宛メールアドレスに指定します。
「 $Mail->to 」が送信先メールアドレスの設定になります。

$Mail->subject .= "(" . $author->display_name . "へのお問い合わせです)";

どこへの問い合わせなのか確認のため送信メールタイトルにユーザー登録名を追加しておきます。
「 $Mail->subject 」が送信メールタイトルの設定になります。

元のメールタイトルを書き換える場合は「 $Mail->subject = 」で、元のメールタイトルに追加する場合は「 $Mail->subject .= 」になります。

まとめ

MW WP Form で管理者宛メールを複数の送信先に振り分ける方法について解説しました。

  • 問い合わせフォームへのリンクにパラメータ(URL引数)を設定する
  • MW WP Formの設定「URL引数を有効にする」をチェックする
  • functions.phpに「mwform_admin_mail_raw_mw-wp-form-xxx」の処理を設定する

ここではメールフォームにきた時点で問い合わせ先が決まっているパラメータを使った方法で解説しましたが、メールフォーム内でselectやradioを使って選択することで指定することも可能です。

送信先が複数になるメールフォームを1つの設定で実現することで、Webサイトの制作、保守管理の効率化をすることができます。

MW WP Formのカスタマイズについては以下の記事でまとめています。

フォームカスタマイズに便利!MW WP Formの使い方まとめ【WordPress】

WordPressのメールフォームをカスタマイズする方法を知りたいですか?この記事では、カスタマイズに便利なプラグインMW WP Formの使い方、カスタマイズ方法などをまとめて紹介しています。ぜひご覧ください。