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

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