在WooCommerce结帐中更改运输或付款方式更改时的迷你购物车

时间:2020-10-17 18:14:50

标签: php jquery wordpress woocommerce checkout

当有人在“结帐”页面上更改“送货方式”或“付款方式”时,我试图触发WooCommerce迷你购物车更新。

我尝试使用以下代码:

add_action( 'wp_footer', 'custom_minicart_checkout_jqscript' );
function custom_minicart_checkout_jqscript() {
    if ( ! ( is_checkout() && ! is_wc_endpoint_url() ) )
        return; // Only Checkout Page
    ?>
    <script type="text/javascript">
    jQuery( function($){
        $('form.checkout').on('change', 'input', function(){
            $(document.body).trigger('wc_fragment_refresh');
        });
    });
    </script>
    <?php
}

但是当客户对所选的“送货方式”或/和“付款方式”进行更改时,它将显示以前的总计,而不是当前的总计。

更新我测试了以下解决方案,但得到的结果相同。 You can see it on this video(下载视频以高质量观看)。我删除了不必要的插件,并清除了functions.php文件。似乎有可能,但由于某种原因,迷你购物车的更新被先前的总数延迟了。

1 个答案:

答案 0 :(得分:3)

请尝试使用以下内容,将更改事件委派给document.body,并专门定位运送方式和付款方式的更改:

add_action('wp_footer', 'minicart_checkout_refresh_script');
function minicart_checkout_refresh_script(){
    if ( is_checkout() && ! is_wc_endpoint_url() ) :
    ?>
    <script type="text/javascript">
    (function($){
        $(document.body).on('change', 'input[name="payment_method"],input[name^="shipping_method"]', function(){
            $(document.body).trigger('update_checkout').trigger('wc_fragment_refresh');
        });
    })(jQuery);
    </script>
    <?php
    endif;
}

代码进入活动子主题(或活动主题)的functions.php文件中。应该会更好。

注意::迷你购物车中没有任何计算出的总数,而只有小计项目……您可以在WooCommerce默认模板cart/mini-cart.php文件中看到这一点。因此,结帐页面上的默认WooCommerce迷你购物车中没有任何要刷新或更新的