選択内容による管理者メール送信先変更は、よくある要望だと思います。
確認・完了ページの変更のやり方は今回調べてみました。もっといい感じのやり方あったら是非教えてください。
どちらもfunction.php
に記述すれば動くはずです。多分。
テスト環境
WordPress 5.7.2
MW WP Form 4.4.0
管理者メールの送信先を変更
//お問い合わせフォーム 選択肢で管理者メールの送信先変える
function my_mail( $Mail, $values, $Data ) {
if($Data->get('{name}') === '{value}'){
$Mail->to = '{mail}';
}
return $Mail;
}
add_filter('mwform_admin_mail_mw-wp-form-xx', 'my_mail', 10, 3);
{name}
の値が{value}
だった時に管理者メールの送信先が{mail}
になります。
例えば、下図のようなフォームを作ったとして、
if($Data->get('menu') === 'にく'){
$Mail->to = 'oniku@example.com';
}
のようにすれば、「にく」を選択している場合に「oniku@example.com」に管理者メールを送ることができます。

確認・完了ページのURL変える
//お問い合わせフォーム 選択肢で確認・完了ページのURL変える
function my_mwform_redirect_url($url, $Data) {
if($Data->get('{name}') === '{value}'){
switch($Data->get_view_flg()){
case 'confirm':
$url = '{url_confirm}';
break;
case 'complete':
$url = '{url_complete}';
break;
default:
break;
}
}
return $url;
}
add_action( 'mwform_redirect_url_mw-wp-form-xx', 'my_mwform_redirect_url', 10, 2 );
{name}
の値が{value}
だった時に、確認画面URLが{url_confirm}
に、完了画面URLが{url_complete}
になります。
メモ:$Data->get_view_flg()
でフォームの現在の表示画面を取得(input
, confirm
, complete
)
先ほどのフォームの例でいうと
if($Data->get('menu') === 'さかな'){
switch($Data->get_view_flg()){
case 'confirm':
$url = get_home_url().'/confirm_osakana/';
break;
case 'complete':
$url = get_home_url().'/complete_osakana/';
break;
default:
break;
}
}
みたいな感じにすれば、「さかな」を選んだ場合の確認・完了画面URLを変更できます。
それぞれのフィルターフックのマニュアルページへのリンクです。
https://plugins.2inc.org/mw-wp-form/filter-hook/mwform_admin_mail/
https://plugins.2inc.org/mw-wp-form/filter-hook/mwform_redirect_url_mw-wp-form-xxx/
よろしければどうかご感想を!
※コメントは、サイト管理者による承認後、ページに表示されます。
この記事は、感想を受け付けていません