概要
すべてのフォームに適用されるドメインレベルでのグローバルな拒否リストの作成に興味がありますか?このようなリストを作成することで、過去にフラグが立てられたスパムメールが単一の統一された機能によってすべてのWPFormsで普遍的にブロックされることが保証されます。
デフォルトでは、AllowlistまたはDenylistを使って、各フォームのドメインを簡単にブロックできます。 *@bad-domain.com
.AllowlistまたはDenylistの設定の詳細については、こちらをご覧ください、 こちらのガイドをご覧ください。.
しかし、このチュートリアルの主な目的は、グローバルリストを作成し、各フォームで個別に編集する必要をなくすことです。このチュートリアルで示すように、PHPの機能を活用することで、このようなリストを構築することは簡単で迅速なプロセスとなります!
スニペットの追加
それでは、このスニペットをサイトに追加し、ブロックしたいドメイン名ごとにリストをカスタマイズしましょう。このスニペットをコピーしてサイトに貼り付けるだけです。
スニペットをサイトに追加する方法と場所については、こちらのチュートリアルをご覧ください。
/* * Global denylist for domains on all WPForms. * * @link https://wpforms.com/developers/how-to-create-a-global-denylist/ */ function wpf_dev_blacklist_global_domains( $field_id, $field_submit, $form_data ) { // Find the domain name, anything after the @ symbol $domain = substr( strrchr( $field_submit, "@" ), 1 ); // Add the domains here, separated by commas $blacklist = array( 'deny.com', 'nope.com' ); // Customize the error message that will be shown if( in_array( $domain, $blacklist ) ) { wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'We apologize, this domain is not accepted.', 'wpforms' ); return; } } add_action('wpforms_process_validate_email', 'wpf_dev_blacklist_global_domains', 10, 3 );
このスニペットは、メール・フィールドに入力されたドメイン名を調べ、このスニペットで作成したグローバル・リストと照合します。ドメイン名は[email protected]形式でリストすることができます。しかし、各ドメインはシングルクォートでリストされ、コンマで区切られます。
ユーザーがそのドメインを入力してフォームを送信しようとすると、エラーが表示されます。
これで完了です!これですべての WPForms に対してグローバルな拒否リストを作成することができました。フォーム内の冒涜的な言葉もブロックしたいですか?チュートリアル「冒涜的な言葉を含むフォーム送信をブロックする方法」をご覧ください。
関連
アクション・リファレンス:wpforms_process_validate_email