電話番号フィールドのバリデーションを追加したいですか? たとえば、ユーザーがフリーダイヤルの番号を電話番号フィールドに入力できないようにしたい場合、小さなPHPスニペットで簡単に実現できます。このチュートリアルでは、フリーダイヤルがフォームに入力されないようにする方法を説明します。
フォームの作成
まず、フォームを作成し、電話番号フィールドとフォームに必要な追加フィールドを追加します。
フォームの作成にヘルプが必要な場合は、こちらのドキュメントをご覧ください。
電話番号フィールドフォーマットの設定
この文書では、電話番号の先頭が 8
または +8
.どの フォーマット に使用している 電話 フォーム・フィールドは、以下のコード・スニペットによって異なります。
電話番号フィールドの追加検証
次に、必要なPHPスニペットを追加します。スニペットは2種類あり、フォームを作成したときにPhoneフィールドに設定したFormatによって異なります。
スニペットをサイトに追加する際にヘルプが必要な場合は、こちらのチュートリアルをご覧ください。
米国電話フォーマット
/** * Custom US format phone field Validation on submit (reject defined prefixes). * * @link https://wpforms.com/developers/how-to-provide-additional-phone-field-validation/ */ function wpf_dev_process_validate_phone($field_id, $field_submit, $form_data) { // Only check for US phone field format if ( 'us' === $form_data[ 'fields' ][$field_id][ 'format' ]) { $stripped_phone = str_replace(array( '(', ')'), '', (string) $field_submit); $prefixes = [ '8', '+8' ]; $regexp = implode( '|', $prefixes); if (preg_match( '/^[' . $regexp . ']/', $stripped_phone)) { wpforms()->process->errors[$form_data[ 'id' ]][$field_id] = esc_html__( 'The number should not start with "' . implode( '", "', $prefixes ) . '"', 'plugin-domain' ); } } } add_action( 'wpforms_process_validate_phone', 'wpf_dev_process_validate_phone', 10, 3);
スマートフォンと国際電話のフォーマット
/** * Custom Smartphone and International field Validation on submit (reject defined prefixes). * * @link https://wpforms.com/developers/how-to-provide-additional-phone-field-validation/ */ function wpf_dev_process_validate_phone( $field_id, $field_submit, $form_data ) { $prefixes = [ '8', '+8' ]; $regexp = implode( '|', $prefixes ); if ( preg_match( '/^[' . $regexp . ']/', (string) $field_submit ) ) { wpforms()->process->errors[ $form_data[ 'id' ] ][ $field_id ] = esc_html__( 'The number should not start with "' . implode( '", "', $prefixes) . '"', 'plugin-domain' ); } } add_action( 'wpforms_process_validate_phone', 'wpf_dev_process_validate_phone', 10, 3 );
これらのスニペットはどちらも、フォームが送信されたときにPhoneフィールドの値を調べ、それが数字の8または+8で始まる場合、フォームは送信されず、エラーメッセージが表示されます。
これで完了です! これで電話フォームフィールドのバリデーションが追加されました。特定のメールアドレスが入力されないようにしたいですか? メールドメインを制限する方法についてのチュートリアルをご覧ください。