MW WP Formでラジオボタンの選択に紐づいたアドレスに複数メールを送信する方法

wordpressコメントに連番追加 Wordpress
wordpressコメントに連番追加

カスタム投稿タイプでラジオボタンの項目とメールアドレスを紐づけする方法はこちら。

カスタムフィールドの値を取得し複数メールを送信する方法

function.phpに以下を追加します。

/**
 * 自動返信メールフィルター
 */
function my_auto_mail( $Mail, $values, $Data ) {

    $data = $Data->gets();
    if (isset($data['choices'])) {
	    $fields = get_fields($data['choices']);
	    
	    // 送信メール 1
	    if (isset($fields['choice_mail_1']) && !empty($fields['choice_mail_1'])) {
		    $Mail->to = $fields['choice_mail_1'];
		    $Mail->send();
	    }
	    
	    // 送信メール 2
	    if (isset($fields['choice_mail_2']) && !empty($fields['choice_mail_2'])) {
		    $Mail->to = $fields['choice_mail_2'];
		    $Mail->send();
	    }
    }
    
    $Mail->to = '';
    add_filter( 'mwform_is_mail_sended', function(){
	return true;
    });
    return $Mail;
}
add_filter( 'mwform_auto_mail_mw-wp-form-X', 'my_auto_mail', 10, 3 );

ラジオボタンのvalueを投稿IDにしているため、$data[‘choices’]でカスタム投稿タイプのpost_idが取得できます。

宛先を空にしてMW_WP_Form_Mailオブジェクトを返す

注意点は最後に宛先を空($Mail->to = ”;)にしてMailオブジェクトを返すことです。

そうしないと、もう一通メールが送信されてしまいます。宛先を空にしておけば、メールは送信されませんがエラー扱いとなるためmwform_is_mail_sendedフィルターでtrueを返すようにしましょう

hiddenタグに設定したメールアドレスに複数メールを送る方法

管理者宛てのメールアドレスをhiddenタグとして追加します。

[mwform_hidden name="form_mail_1" value="{form_mail_1}"]
[mwform_hidden name="form_mail_2" value="{form_mail_2}"]

function.phpに以下を追加します。

/**
 * 管理者宛てメールフィルター
 */
function admin_mail( $Mail, $values, $Data ) {

    $data = $Data->gets();

	// 管理者宛てメール1
    if (isset($data['form_mail_1']) && !empty($data['form_mail_1'])) {
	    $Mail->to = $data['form_mail_1'];
	    $Mail->send();
    }
    
	// 管理者宛てメール2
    if (isset($data['form_mail_2']) && !empty($data['form_mail_2'])) {
	    $Mail->to = $data['form_mail_2'];
	    $Mail->send();
    }
    
    $Mail->to = '';
    add_filter( 'mwform_is_mail_sended', function(){
	return true;
    });
    return $Mail;
}
add_filter( 'mwform_admin_mail_mw-wp-form-X', 'admin_mail', 10, 3 );

こちらも最後は宛先を空にして、mwform_is_mail_sendedフィルターでtrueを返しておきましょう。

コメント

タイトルとURLをコピーしました