Como fornecer validação adicional de campo de telefone

Gostaria de fornecer validação adicional para o campo Telefone? Por exemplo, se quiser impedir que os utilizadores introduzam números gratuitos no seu campo Telefone, pode fazê-lo facilmente com um pequeno snippet de PHP. Neste tutorial, vamos guiá-lo pelas etapas de como impedir que números gratuitos sejam inseridos no seu formulário.

Criar o formulário

Para começar, terá de criar o seu formulário e adicionar o campo Telefone ao formulário, bem como quaisquer campos adicionais de que necessite no formulário.

Se precisar de ajuda para criar o seu formulário, consulte esta documentação.

para fornecer uma validação adicional do campo do telefone, terá primeiro de criar o seu formulário.

Definir o formato do campo Telefone

Para efeitos desta documentação, vamos impedir que qualquer número de telefone que comece por 8 ou +8. Dependendo de qual Formato que está a utilizar para o Telefone dependerá do fragmento de código que terá de utilizar abaixo.

Selecione o formato que pretende utilizar no campo do telefone

Validação adicional de campos telefónicos

Agora é hora de adicionar o snippet PHP que você precisa. Existem dois snippets diferentes e isso depende do Formato definido para o campo Telefone quando criou o formulário.

Se precisar de ajuda para adicionar snippets ao seu site, consulte este tutorial.

Formato de telefone dos EUA

/**
 * 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 telefone 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 os snippets analisarão o valor do campo Telefone quando o formulário for enviado e, se começar com o número 8 ou +8, o formulário não será enviado e aparecerá uma mensagem de erro.

Ao fornecer uma validação adicional do campo de telefone, pode facilmente impedir a introdução de números gratuitos no seu formulário.

E é isso! Adicionou com êxito uma validação adicional ao campo do formulário Telefone. Também gostaria de impedir que determinados emails sejam inseridos? Confira nosso tutorial sobre Como restringir domínios de email.

Filtro de referência

wpforms_process_validate_phone