我想设置计费电话号码需要或不需要的基础上的运输方式。
我已将装运方法设置为数组,并从会话选择的装运方法中对其进行了检查,但它不起作用
add_filter('woocommerce_checkout_fields', 'fire_remove_billing_checkout_fields');
function fire_remove_billing_checkout_fields($fields) {
global $woocommerce;
$methods = array('flat_rate:2', 'flat_rate:3', 'flat_rate:17', 'flat_rate:20');// Set shipping method to hide the checkout field(s).
$chosen_methods = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping = $chosen_methods[0];
if(in_array($chosen_shipping, $methods)){
$fields['billing']['billing_phone'][ 'required' ] = true;
}else{
$fields['billing']['billing_phone'][ 'required' ] = false;
}
return $fields;
}
1条答案
按热度按时间wb1gzix01#
您的代码对我来说很好用。我已经添加了我的运费ID,它按预期工作,但是刷新页面是必要的,因为WooCommerce不会在
update_checkout
触发器上本地刷新账单字段。您应该在
updated_checkout
事件上使用Javascript/jQuery重新加载页面,或者使用 AJAX 只重新加载账单字段,如下所示:请记住,重新加载这些字段可能需要一段时间,因此您可能需要添加一些加载CSS类,或者一个微调器。