Forzar que se recalculen los gastos de envío en WooCommerce

Script para forzar la actualización del cálculo de los gastos de envío al modificar los campos del checkout que le indiquemos.


por

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»

  1. Avatar de David Toro

    |

    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!

    1. Avatar de esther

      |

      Gracias David! Me alegro que te haya servido 🙂

  2. Avatar de Ana Milena Albornoz

    |

    Muchas gracias, el codigo funciona perfecto.

  3. Avatar de Gustavo Piccinini

    |

    Hola, consulta. Este scritp se agrega en el archivo Function.php??

    1. Avatar de esther

      |

      Hola Gustavo,
      Sí! En el archivo functions.php del tema o tema hijo que estés usando.

      Saludos!
      esther