post #6142

Código PHP para validar CPF ou CNPJ em formulários do Elementor

Publicado em: 03/04/2025 / Atualizado em: 03/04/2025

Categorias: BlogElementorElementorPHPWordpress

Nesse post eu vou compartilhar com você um código em PHP para realizar a validação de campos CPF ou CNPJ no formulário do Elementor no WordPress.

function validar_cpf_cnpj_elementor( $record, $ajax_handler ) {

    $fields = $record->get_field( [ 'id' => 'cpf_cnpj' ] ); 

    if ( empty( $fields ) ) {
        return;
    }

    $field = current( $fields );
    $valor = preg_replace( '/\D/', '', $field['value'] ); 

    if ( ! validar_cpf_cnpj( $valor ) ) {
        $ajax_handler->add_error(
            $field['id'],
            esc_html__( 'CPF ou CNPJ inválido.', 'textdomain' )
        );
    }
}

add_action( 'elementor_pro/forms/validation', 'validar_cpf_cnpj_elementor', 10, 2 );

function validar_cpf_cnpj( $valor ) {
    if ( strlen( $valor ) === 11 ) {
        return validar_cpf( $valor );
    } elseif ( strlen( $valor ) === 14 ) {
        return validar_cnpj( $valor );
    }
    return false;
}

function validar_cpf( $cpf ) {
    if ( preg_match( '/(\d)\1{10}/', $cpf ) ) return false;

    for ( $t = 9; $t < 11; $t++ ) {
        $d = 0;
        for ( $c = 0; $c < $t; $c++ ) {
            $d += $cpf[$c] * ( ( $t + 1 ) - $c );
        }
        $d = ( ( 10 * $d ) % 11 ) % 10;
        if ( $cpf[$c] != $d ) return false;
    }
    return true;
}

function validar_cnpj( $cnpj ) {
    if ( preg_match( '/(\d)\1{13}/', $cnpj ) ) return false;

    $soma = 0;
    $peso = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
    for ( $i = 0; $i < 12; $i++ ) {
        $soma += $cnpj[$i] * $peso[$i];
    }

    $resto = $soma % 11;
    $dig1 = ($resto < 2) ? 0 : 11 - $resto;

    $soma = 0;
    $peso = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
    for ( $i = 0; $i < 13; $i++ ) {
        $soma += $cnpj[$i] * $peso[$i];
    }

    $resto = $soma % 11;
    $dig2 = ($resto < 2) ? 0 : 11 - $resto;

    return ( $cnpj[12] == $dig1 && $cnpj[13] == $dig2 );
}

Publicações recomendadas:


Inscreva-se em Nossa News:

Seja notificando sempre que tiver conteúdo novo disponível no meu canal do Youtube ou artigo no meu Blog.

Bruno Devs News


Link Curto para Compartilhamento

Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.

bruno.art.br/pb/6142

ID de Referência: 6142

Sugira uma publicação

Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.

Clique aqui e entre em contato