/** * Hides checkout fields based on the products in the cart * * @param array $fields * @return array */ function conditional_checkout_fields_products( $fields ) { $cart = WC()->cart->get_cart(); foreach ( $cart as $item_key => $values ) { $product = $values['data']; if ( $product->get_id() == 3652 ) { // Remove billing address unset( $fields['billing']['billing_company'] ); unset( $fields['billing']['billing_address_1'] ); unset( $fields['billing']['billing_address_2'] ); unset( $fields['billing']['billing_postcode'] ); unset( $fields['billing']['billing_city'] ); unset( $fields['billing']['billing_country'] ); // Remove shipping address unset( $fields['shipping']['shipping_company'] ); unset( $fields['shipping']['shipping_address_1'] ); unset( $fields['shipping']['shipping_address_2'] ); unset( $fields['shipping']['shipping_postcode'] ); unset( $fields['shipping']['shipping_city'] ); unset( $fields['shipping']['shipping_country'] ); } } return $fields; } add_filter( 'woocommerce_checkout_fields', 'conditional_checkout_fields_products' );