Código PHP para validar CPF ou CNPJ em formulários do Elementor - Bruno Devx - BR Criativus

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:



Link Direto

Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link direto abaixo. Basta copiar.

bruno.art.br/?p=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