Recientemente me he encontrado un caso en el que, al personalizar la página de finalizar pedido en WordPress, cambiando de orden los campos, ocultando algunos y añadiendo otros, se perdía de alguna forma el disparador para el cálculo de los gastos de envío, es decir, al modificar la provincia o el código postal, los gastos que aparecían en el total no se actualizaban según correspondía.
Finalmente, para solucionarlo, opté por forzar ese re-cálculo mediante una función de JavaScript que llama al disparador o trigger ‘update_checkout’.
En este ejemplo, aplicamos esa llamada cuando se cambian los campos ‘billing_state’ o ‘billing_postcode’, es decir, la provincia o el código postal de facturación, ya que en este caso por defecto los campos de envío están ocultos:
add_action('wp_footer', 'state_update_checkout', 50);
function state_update_checkout() {
if ( ! is_checkout() ) return;
?>
<script type='text/javascript'>
jQuery(function($){
$(document.body).on('change', 'select[name="billing_state"]', function() {
jQuery('body').trigger('update_checkout');
});
$(document.body).on('change', 'select[name="billing_postcode"]', function() {
jQuery('body').trigger('update_checkout');
});
});
</script>
<?php
}
La función comprueba primero que estemos en la página que nos interese (is_checkout()), y la llamamos en el wp_footer.
¿Eres implementador o desarrollador WordPress?
En la Zona DPW encontrarás más recursos, tutoriales, plantillas, y una biblioteca de snippets para poder utilizar en tu día a día y ganar tiempo en tu trabajo:
ACCEDER AHORA
Comentarios
5 respuestas a «Forzar que se recalculen los gastos de envío en WooCommerce»
|
Muy útil! Administro varios ecommerce, todos con WooCommerce y justo hoy 20210414 me doy cuenta que tras alguna actualización de un plugin (no se cuál es) ya no actualizan los gastos de envío que había configurado. Utilicé el código y ya funciona perfectamente! GRACIAS!
|
Gracias David! Me alegro que te haya servido 🙂
|
Muchas gracias, el codigo funciona perfecto.
|
Hola, consulta. Este scritp se agrega en el archivo Function.php??
|
Hola Gustavo,
Sí! En el archivo functions.php del tema o tema hijo que estés usando.
Saludos!
esther