ご注意!

この記事には PHP コードが含まれており、開発者を対象としています。このコードは便宜上提供していますが、コードのカスタマイズやサードパーティの開発についてはサポートを提供していません。

追加のガイダンスについては、WPBeginner の カスタムコードの追加方法に関するチュートリアル を参照してください。

閉じる

テキストフィールドからドメインをブロックする方法

ウェブフォームのセキュリティを強化することに興味がありますか?簡単なPHPスニペットを使用すると、フォームのテキストフィールド内で直接特定のドメインからの送信を効果的にブロックできます。このチュートリアルでは、この機能を実装するステップバイステップのプロセスを案内し、フォームがスパムや悪意のある送信から保護されるようにします。

フォームの作成

まず、新しいフォームを作成します。私たちのフォームは、名前、メールアドレス、および追加したいコメントを入力してもらう簡単な連絡フォームです。

例のフォームには、名前メールアドレス段落テキスト、および(追加のセキュリティのために)カスタムキャプチャのフォームフィールドを追加します。

フォームを作成し、フィールドを追加することから始めます

サポートが必要な場合は、新しいフォームの作成方法に関する役立つガイドをご覧ください

ドメインのブロック

次にスニペットを追加します。スニペットの追加方法と場所に関するサポートについては、このチュートリアルをご覧ください

段落テキストフィールド

/**
 * Block domains inside the Paragraph Text
 *
 * @link   https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
 */
  
function wpf_dev_prevent_domains_textarea( $field_id, $field_submit, $form_data ) {
     
    if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
        wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
    }
}
  
add_action( 'wpforms_process_validate_textarea' , 'wpf_dev_prevent_domains_textarea', 10, 3 );

このスニペットは、段落テキストフォームフィールド内でpreg_match内の単語の任意の組み合わせを検索し、真の場合にフォーム送信をブロックします。

コメントフィールドにドメイン名が含まれている場合、フォームは送信されません

一行テキストフィールド

同様に、一行テキストフィールドにも同じ機能を使用できます。スニペットは、フィルター名を除いてほぼ同じになります。

/**
 * Block domains inside the Single Line Text
 *
 * @link   https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
 */
  
function wpf_dev_prevent_domains_text( $field_id, $field_submit, $form_data ) {
     
    if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
        wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
    }
}
  
add_action( 'wpforms_process_validate_text' , 'wpf_dev_prevent_domains_text', 10, 3 );

これで完了です!これらのフィールドの不適切な言葉もブロックしたいですか?不適切な言葉を含むフォーム送信をブロックする方法に関するチュートリアルをご覧ください。

参照アクション

よくある質問

Q: リッチテキストフォームフィールドでこれを使用できますか?

A: もちろんです!こちらがリッチテキストフォームフィールドのスニペットです。

/**
 * Block domains inside the Rich Text
 *
 * @link   https://wpforms.com/developers/how-to-block-domains-from-your-text-fields/
 */
  
function wpf_dev_prevent_domains_richtext( $field_id, $field_submit, $form_data ) {
     
    if ( preg_match( '/www.|.com|.net|.org|.co.uk/', $field_submit ) ) {
        wpforms()->get( 'process' )->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'This is not allowed.', 'plugin-domain' );
    }
}
  
add_action( 'wpforms_process_validate_richtext' , 'wpf_dev_prevent_domains_richtext', 10, 3 );

Q: 他のフィールドにこれを適用するにはどうすればよいですか?

A: ほとんどすべてのフィールドには何らかの検証があります。ほとんどのフィールドはdo_action( wpforms_process_validate_{$field_type}, $field_id, $field_submit, $form_data )を使用します。_{$field_type}をフィールドタイプに置き換えるだけです。