I used this code to remove some fields if they have a coupn, and it works, but if the coupons are more than one I can't do it, for example, coupon summer and coupon winter tnx.
add_filter( 'woocommerce_checkout_fields' ,'custom_override_checkout_fields' );
function custom_override_checkout_fields( $fields ) {
global $woocommerce;
$coupon_id = 'summer';
if (in_array($coupon_id, $woocommerce->cart->get_applied_coupons())) {
//unset($fields['billing']['billing_first_name']);
//unset($fields['billing']['billing_last_name']);
unset($fields['billing']['billing_address_1']);
unset($fields['billing']['billing_address_2']);
unset($fields['billing']['billing_city']);
unset($fields['billing']['billing_postcode']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
unset($fields['billing']['billing_phone']);
//unset($fields['billing']['billing_company']);
//unset($fields['billing']['billing_email']);
unset($fields['order']['order_comments']);
}
return $fields;
}