Snow Monkey Formsの管理者宛メールは、WordPressの管理画面上では1つしか設定できません。
この記事では、「Snow Monkey Formsのセレクトボックスの値に合わせて、管理者宛メールの送信先を変更・追加する」方法をご紹介します。
目次
本記事で解決できること
- Snow Monkey Formsのフックを用いた実装手順
- セレクトボックスの選択肢に合わせて、管理者宛メールの送信先を変更できる
使用環境
- WordPress
- Snow Monkey Forms
- テーマはfunctions.phpなど、PHPを設定できるもの(プラグインの使用可)
❶ Snow Monkey Forms側の設定

セレクトボックスのNAMEとOPTIONSを設定します。
この値は後で使用するので、控えておいてください。
OPTIONSのvalueは半角英数字で設定してください。
以下をコピペしてから修正していただくとやりやすいと思います。
NAME
select-shop-name
OPTIONS
"" : "選択してください"
"shop01" : "テスト店舗"
"shop02" : "テストベーカリー"
❷ functions.phpにコードを追加
管理者宛メールを変更する場合と追加する場合でコードが変わります。
❷-1 管理者宛メールの送信先を変更したい
以下のコードを functions.php に追加してください。
セレクトボックスに値が入力されている場合、
管理者宛メールの送信先は、管理画面で設定されているメールアドレスではなく、
このコードに設定したメールアドレスに”上書き”されます。
/*
* Snow Monkey Formsのセレクトボックスの値に合わせて、送信先を変更する
*/
add_filter(
'snow_monkey_forms/administrator_mailer/args',
function ($headers, $responser, $setting) {
/* フォームの送信内容 $responser から NAME属性に設定した名前で $sendTarget へ入れる */
$sendTarget = $responser->get('select-shop-name'); // セレクトボックスの値を取得
/* NAME属性が option1 だった場合 */
if ($sendTarget === 'shop01') {
/* 管理者メール送信先を変更 */
$headers['to'] = 'メールアドレスを入れる';
} elseif ($sendTarget === 'shop02') {
/*
NAME属性が option2 だった場合
管理者メール送信先を変更 */
$headers['to'] = 'メールアドレスを入れる';
}
/* 書き換えたデータをお返しする */
return $headers;
},
10,
3
);
❷-2 管理者宛メールの送信先を追加したい
以下のコードを functions.php に追加してください。
セレクトボックスに値が入力されている場合、
管理者宛メールの送信先として、管理画面で設定されているメールアドレスに加えて、
セレクトボックスの値も送信先として追加されます(送信先が複数になります)。
/*
* Snow Monkey Formsのセレクトボックスの値に合わせて、管理者宛メールの送信先を追加する
*/
add_filter(
'snow_monkey_forms/administrator_mailer/args',
function ($headers, $responser) {
/* フォームの送信内容 $responser から NAME属性に設定した名前で $sendTarget へ入れる */
$sendTarget = $responser->get('select-shop-name'); // セレクトボックスの値を取得
// 元の送信先を保持
$original_to = $headers['to'];
// 複数の送信先を格納する配列を初期化
$recipients = [];
// 元の送信先があれば追加(カンマ区切りの場合は配列に分割)
if (!empty($original_to)) {
$original_recipients = explode(',', $original_to);
foreach ($original_recipients as $recipient) {
$recipients[] = trim($recipient);
}
}
/* 選択された店舗に基づいて送信先を追加 */
if ($sendTarget === 'shop01') {
/* 管理者メール送信先を追加 */
$recipients[] = 'メールアドレスを入れる';
} elseif ($sendTarget === 'shop02') {
/* 管理者メール送信先を追加 */
$recipients[] = 'メールアドレスを入れる';
}
// 重複を削除して一意のメールアドレスリストを作成
$unique_recipients = array_unique($recipients);
// カンマ区切りの文字列に変換して設定
$headers['to'] = implode(',', $unique_recipients);
/* 書き換えたデータをお返しする */
return $headers;
},
10,
3
);
コードを書く上で、こちらのサイトが参考になりました!
Snow Monkey Formsの仕組みまでわかりやすく紹介してくださっています。
オレインデザイン


Snow Monkey Forms でフォーム側から送信先を選択させる方法 | オレインデザイン
この記事は Snow Monkey / unitone Advent Calendar 2022 の4日目の記事になります。 みなさん、Snow Monkey Forms というプラグインはご存知ですか?WordPress テーマ Sno...
チェックボックスにしたい方は、こちらの記事が参考になると思います。
miimo Inc.


【Snow Monkey Forms カスタマイズ】フックを使ってフォーム要素に値を自動でセットする | miimo Inc.
『Snow Monkey Forms』はシンプルながら使い勝手がよく、さくさくとフォームを作れるWordPress用のブロックエディタ対応メールフォームプラグインです。今回はURLクエリ(?...