電話番号フィールドのバリデーションを追加する方法

電話番号フィールドのバリデーションを追加したいですか? たとえば、ユーザーがフリーダイヤルの番号を電話番号フィールドに入力できないようにしたい場合、小さな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で始まる場合、フォームは送信されず、エラーメッセージが表示されます。

電話番号フィールドのバリデーションを追加することで、フリーダイヤルがフォームに入力されるのを簡単に防ぐことができます。

これで完了です! これで電話フォームフィールドのバリデーションが追加されました。特定のメールアドレスが入力されないようにしたいですか? メールドメインを制限する方法についてのチュートリアルをご覧ください。

リファレンス・フィルター

wpforms_process_validate_phone