在WooCommerce结账时,在发货或付款方式更改时刷新迷你购物车



当有人更改结账页面上的发货方式或付款方式时,我正试图触发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
}

但当客户更改所选的运输方式或/和付款方式时,它会显示以前的总额,而不是当前的总额。

UPDATE我测试了以下解决方案,但得到了相同的结果。你可以在这个视频中看到它(下载视频以高质量观看(。我删除了非必要的插件并清除了functions.php文件。这似乎是可能的,但由于某种原因,迷你购物车的更新被之前的总数推迟了。

尝试使用以下方法,将更改事件委派给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迷你购物车中,没有任何内容需要刷新或更新。

最新更新