Cómo proporcionar validación adicional de campos telefónicos

¿Desea proporcionar validación adicional al campo Teléfono? Por ejemplo, si desea evitar que los usuarios introduzcan números gratuitos en el campo Teléfono, puede conseguirlo fácilmente con un pequeño fragmento de PHP. En este tutorial, le guiaremos a través de los pasos para evitar que se introduzcan números gratuitos en su formulario.

Creación del formulario

Para empezar, tendrá que crear su formulario y añadir el campo Teléfono a su formulario, así como cualquier otro campo adicional que necesite en su formulario.

Si necesita ayuda para crear su formulario, consulte esta documentación.

para proporcionar validación adicional del campo de teléfono, primero tendrá que crear su formulario.

Establecer el formato del campo Teléfono

A efectos de esta documentación, vamos a evitar que cualquier número de teléfono que empiece por 8 o +8. Dependiendo de Formato que está utilizando para el Teléfono dependerá del fragmento de código que deberá utilizar a continuación.

Selecciona el formato que deseas utilizar en el campo de tu teléfono

Validación adicional de campos telefónicos

Ahora es el momento de añadir el fragmento de PHP que necesitará. Hay dos fragmentos diferentes y esto depende de qué Formato se estableció para el campo Teléfono cuando creó su formulario.

Si necesitas ayuda para añadir snippets a tu sitio, consulta este tutorial.

Formato de teléfono en EE.UU.

/**
 * 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);

Formato de teléfono inteligente e internacional

/**
 * 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 );

Ambos fragmentos mirarán el valor del campo Teléfono cuando se envíe el formulario y si empieza por el número 8 o +8 el formulario no se enviará y aparecerá un mensaje de error.

Al proporcionar una validación adicional del campo de teléfono, puede evitar fácilmente que se introduzcan números gratuitos en su formulario.

Y ya está. Ha añadido correctamente la validación adicional para su campo de formulario Teléfono. ¿Le gustaría también evitar que se introduzcan ciertos correos electrónicos? Echa un vistazo a nuestro tutorial sobre Cómo restringir dominios de correo electrónico.

Filtro de referencia

wpforms_process_validate_phone