Based on the quantity of three different products (array), I need to unset different checkout fields.
Problem is, no matter how and what I try using the code below - I get the "critical error" on website.
I need to check:
If the quantity of any of the three products within the array is 8 or more, remove country and state (billing and shipping).
If the quantity is less than 8 for any of the three products within the array, remove all fields except for name, phone and email (billing and shipping).
This is the code:
add_filter('woocommerce_checkout_fields', 'remove_cheeckout_fields_based_on_product_qty' );
function remove_cheeckout_fields_based_on_product_qty( $fields ) {
$targeted_ids = array( 123, 456, 789 ); // how do I add qty to these?
$found = false;
foreach ( WC()->cart->get_cart() as $item ) {
if (array_intersect( $targeted_ids, array( $item['product_id'], $item['variation_id'] ) ) ) {
$found = true;
break;
}
}
if ( $found ) {
unset($fields['shipping']['shipping_country']);
unset($fields['shipping']['shipping_state']);
unset($fields['billing']['billing_country']);
unset($fields['billing']['billing_state']);
} else {
unset($fields['shipping']['shipping_company']);
unset($fields['shipping']['shipping_country']);
unset($fields['shipping']['shipping_address_1']);
unset($fields['shipping']['shipping_address_2']);
unset($fields['shipping']['shipping_city']);
unset($fields['shipping']['shipping_state']);
unset($fields['shipping']['shipping_postcode']);
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_company']);
return $fields;
}
Any advice?