Read Time:53 Second
Solo debes considerar cambiar el nombre de tu field, en el post data.
// Validar Rut chileno en el check out de WooCommerce
add_action('woocommerce_after_checkout_validation', 'validar_rut_chileno');
function validar_rut_chileno($posted_data) {
$rut = sanitize_text_field($posted_data['billing_rut']);
// Eliminar puntos y guiones del Rut
$rut = str_replace(array('.', '-'), '', $rut);
// Validar el formato del Rut
if (!preg_match('/^[0-9]{7,8}[0-9kK]$/', $rut)) {
wc_add_notice('Por favor, ingresa un Rut chileno válido.', 'error');
} else {
// Separar el número y el dígito verificador
$numero = substr($rut, 0, -1);
$dv = strtoupper(substr($rut, -1));
// Calcular el dígito verificador esperado
$suma = 0;
$factor = 2;
for ($i = strlen($numero) - 1; $i >= 0; $i--) {
$suma += $factor * $numero[$i];
$factor = $factor % 7 == 0 ? 2 : $factor + 1;
}
$dv_esperado = 11 - ($suma % 11);
$dv_esperado = $dv_esperado == 10 ? 'K' : ($dv_esperado == 11 ? '0' : $dv_esperado);
// Comparar el dígito verificador ingresado con el esperado
if ($dv != $dv_esperado) {
wc_add_notice('El Rut ingresado no es válido.', 'error');
}
}
}