add_filter( 'woocommerce_checkout_fields' , 'virtual_products_less_fields' );
function virtual_products_less_fields( $fields ) {
$virtual_products = true;
foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
if ( ! $cart_item['data']->is_virtual() ) $virtual_products = false;
}
if( $virtual_products===true) {
unset($fields['billing']['billing_company']);
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']);
add_filter( 'woocommerce_enable_order_notes_field', '__return_false',9999 );
}
return $fields;
}