Como fornecer validação adicional do campo de telefone

Você gostaria de fornecer validação adicional do campo de telefone? Por exemplo, se quiser impedir que os usuários insiram números de ligação gratuita no campo Phone, você pode fazer isso facilmente com um pequeno trecho de PHP. Neste tutorial, vamos orientá-lo nas etapas de como evitar que números de telefone gratuitos sejam inseridos no formulário.

Criando o formulário

Para começar, você precisará criar o formulário e adicionar o campo Phone a ele, bem como os campos adicionais necessários no formulário.

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

para fornecer validação adicional do campo do telefone, você precisará primeiro criar o formulário.

Configuração do formato do campo Telefone

Para fins desta documentação, vamos evitar qualquer número de telefone que comece com 8 ou +8. Dependendo de qual Formato que você está usando para o Telefone dependerá do trecho de código que você precisará usar abaixo.

Selecione o formato que deseja usar no campo do telefone

Validação adicional de campo telefônico

Agora é hora de adicionar o snippet PHP de que você precisará. Há dois snippets diferentes e isso depende do formato que foi definido para o campo Phone quando você 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 );

Esses dois snippets examinarão o valor do campo Phone quando o formulário for enviado e, se ele começar com o número 8 ou +8, o formulário não será enviado e uma mensagem de erro será exibida.

Ao fornecer uma validação adicional do campo de telefone, você pode facilmente impedir que números gratuitos sejam inseridos no formulário.

E é isso! Você adicionou com êxito a validação adicional ao campo do formulário Phone. Você também gostaria de impedir que determinados e-mails sejam inseridos? Confira nosso tutorial sobre Como restringir domínios de e-mail.

Filtro de referência

wpforms_process_validate_phone