businessdad icon

How to hide checkout fields based on cart contents

businessdad | PRO | 03/24/18 09:56:31 AM UTC | 0 ⭐ | 973 👁️ | Never ⏰ | []
PHP |

1.18 KB

|

None

|

0 👍

/

0 👎

/**
 * 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' );

Comments