Skip to content

Instantly share code, notes, and snippets.

@rynaldos-zz
Last active July 2, 2020 05:25
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save rynaldos-zz/91b61dbebc80b0280fce81d41f2383ed to your computer and use it in GitHub Desktop.
Save rynaldos-zz/91b61dbebc80b0280fce81d41f2383ed to your computer and use it in GitHub Desktop.
[WooCommerce 3.0+] Hide billing checkout fields for virtual products
add_filter( 'woocommerce_checkout_fields' , 'woo_remove_billing_checkout_fields' );
function woo_remove_billing_checkout_fields( $fields ) {
if( wc_cart_has_virtual_products() == true ) {
unset( $fields['billing']['billing_first_name'] );
unset( $fields['billing']['billing_last_name'] );
unset( $fields['billing']['billing_email'] );
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']);
unset( $fields['order']['order_comments']);
unset( $fields['billing']['billing_address_2']);
unset( $fields['billing']['billing_postcode']);
unset( $fields['billing']['billing_company']);
unset( $fields['billing']['billing_city']);
}
return $fields;
}
function wc_cart_has_virtual_products() {
global $woocommerce;
// By default, no virtual product
$has_virtual_products = false;
// Default virtual products number
$virtual_products = 0;
// Get all products in cart
$products = $woocommerce->cart->get_cart();
// Loop through cart products
foreach( $products as $product ) {
// Get product ID and '_virtual' post meta
if ($product['variation_id'] ) {
$product_id = $product['variation_id'];
} else {
$product_id = $product['product_id'];
}
$is_virtual = get_post_meta( $product_id, '_virtual', true );
// Update $has_virtual_product if product is virtual
if( $is_virtual == 'yes' )
$virtual_products += 1;
}
if( count($products) == $virtual_products )
$has_virtual_products = true;
return $has_virtual_products;
}
// Did this help? Donate me some BTC: 1BEsm8VMkYhSFJ92cvUYwxCtsfsB2rBfiG
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment