Esta publicación fue actualizada el 12 de junio de 2023.
Hace mucho tiempo que no me daba el tiempo para hacer algo por acá. En esta oportunidad quiero compartir el código para agregar el campo RUT en el checkout de WooCommerce. Me pidieron agregar el campo porque, varias empresas de transporte lo están solicitando a la hora de hacer un envío.
Después de probar varios códigos, logré mezclar lo mejor de cada uno y quedó el siguiente código que se puede incorporar con Woody Snippet:
// Agrego el campo Rut chileno en el proceso de finalizar compra de Woocommerce
add_filter('woocommerce_checkout_fields', 'agregar_campo_rut_checkout');
function agregar_campo_rut_checkout($fields) {
$fields['billing']['billing_rut'] = array(
'label' => __('RUT', 'woocommerce'),
'placeholder' => _x('RUT', 'placeholder', 'woocommerce'),
'required' => true,
'class' => array('form-row-wide'),
'clear' => true
);
return $fields;
}
// Acá valido formato de Rut chileno en el proceso de finalizar compra de Woocommerce
// 05.06.2023 Se agregó la función sanitize_text_field() para limpiar el valor del campo RUT y evitar posibles ataques
add_action('woocommerce_checkout_process', 'validar_rut_checkout');
function validar_rut_checkout() {
$rut = sanitize_text_field($_POST['billing_rut']);
if (!empty($rut) && !validar_rut_chileno($rut)) {
wc_add_notice(__('Por favor, ingresa un RUT válido.'), 'error');
}
}
// Acá la función para validar el formato de Rut chileno
function validar_rut_chileno($rut) {
$rut = preg_replace('/[^0-9kK]/', '', $rut);
if (strlen($rut) < 3) {
return false;
}
$rut_body = substr($rut, 0, -1);
$rut_dv = strtoupper(substr($rut, -1));
$factor = 2;
$suma = 0;
for ($i = strlen($rut_body) - 1; $i >= 0; $i--) {
$suma += $factor * $rut_body[$i];
$factor = $factor % 7 == 0 ? 2 : $factor + 1;
}
$dv = 11 - ($suma % 11);
if ($dv == 10) {
$dv = 'K';
} elseif ($dv == 11) {
$dv = '0';
}
return $dv == $rut_dv;
}
Acá puedes descargar Woody Snippets
Espero que sea de ayuda para quienes buscan este requerimiento.
Hasta la próxima!
![]()
Es lo que necesito pero como lo hago para que se vea en mi web ?
El código lo debes pegar en el archivo functions.php de tu tema activo o puedes usar el complemento Woody code snippets.
Puedes darle una mirada a esta entrada.