My WooCommerce的store 在某些情况下提供100%的折扣代码.在这种情况下,我不想收集用户的地址.我需要在 checkout 时设置有条件的地址字段,只有当折扣后的总数超过0.
我已经创建了一个函数,将使地址字段不是必需的,如果打折后的购物车总数等于0,则隐藏.
add_filter( 'woocommerce_default_address_fields', 'customising_checkout_fields', 10000, 1 );
function customising_checkout_fields( $address_fields ) {
$total = WC()->cart->cart_contents_total;
if ( $total == 0 ) {
$address_fields['address_1']['required'] = false;
$address_fields['address_2']['required'] = false;
$address_fields['company']['required'] = false;
$address_fields['country']['required'] = false;
$address_fields['city']['required'] = false;
$address_fields['state']['required'] = false;
$address_fields['postcode']['required'] = false;
$address_fields['address_1']['hidden'] = true;
$address_fields['address_2']['hidden'] = true;
$address_fields['company']['hidden'] = true;
$address_fields['country']['hidden'] = true;
$address_fields['city']['hidden'] = true;
$address_fields['state']['hidden'] = true;
$address_fields['postcode']['hidden'] = true;
}
return $address_fields;
}
这个很好用.问题是,只有当用户使用购物车中已经应用的优惠券从购物车到 checkout 时,它才会加载.如果用户想要在 checkout 时添加优惠券,字段不会自动更新(只有价格是).相反的方向也是一样的-如果用户删除优惠券,价格不再是0,这些字段仍然隐藏,除非用户手动刷新页面.
如何编写一个函数来自动更新帐单详细信息窗格,就像WooCommerce目前更新购物车总数一样?