当有人在“结帐”页面上更改“送货方式”或“付款方式”时,我试图触发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文件。似乎有可能,但由于某种原因,迷你购物车的更新被先前的总数延迟了。
答案 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迷你购物车中没有任何要刷新或更新的。