WordPress

MW WP Formで特定の文字列が入っていたら管理者にメールしない方法

お問い合わせフォームに利用されるプラグイン「MW WP Form」。

特定の文字列が入力されていたら、管理者宛にはメールを届けないカスタマイズです。

コードは以下の通りです。


function zipang_mwform_not_send_admin_mail( $Mail, $values, $Data ) {

	if ( isset($values['your-name']) && strpos( $values['your-name'] ,'http') !== false ) {
		$Mail->to = '';
		add_filter( 'mwform_is_mail_sended', function(){return true;});
	}
	return $Mail;
}
add_filter('mwform_admin_mail_mw-wp-form-xxxx', 'zipang_mwform_not_send_admin_mail', 10, 3);

「xxxx」の部分は対象フォームの個別番号になります。

「your-name」の入力欄に「http」の文字が入力されていたら作動する形になります。
スパムメールには必ずURLが含まれています。

「your-name」の部分を本文で使用しているnameに変更すれば、本文内にhttpがあった場合に発動します。
ただこれをしてしまうと本当のお問い合わせメール内にURLが記載されていると届かない事になりますので、使い方には注意が必要です。

ちなみに送信者に自動返信を設定している場合は、そちらには届きます。
この対応でスパム送信者は送信出来たと認識するので、無駄に試行されなくて済むはずです。