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.

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

Desarrollo Web by esther solà
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.