AI要約
ウェブフォームのセキュリティを強化することに興味がありますか?簡単な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}をフィールドタイプに置き換えるだけです。