Skip to content

Instantly share code, notes, and snippets.

@BFTrick
Last active February 19, 2024 17:23
Show Gist options
  • Star 27 You must be signed in to star a gist
  • Fork 15 You must be signed in to fork a gist
  • Save BFTrick/7873168 to your computer and use it in GitHub Desktop.
Save BFTrick/7873168 to your computer and use it in GitHub Desktop.
Remove the billing address fields for free virtual orders in WooCommerce
<?php
/**
* Plugin Name: WooCommerce Remove Billing Fields for Free Virtual Products
* Plugin URI: https://gist.github.com/BFTrick/7873168
* Description: Remove the billing address fields for free virtual orders
* Author: Patrick Rauland
* Author URI: http://patrickrauland.com/
* Version: 2.0
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* @author Patrick Rauland
* @since 1.0
*/
function patricks_billing_fields( $fields ) {
global $woocommerce;
// if the total is more than 0 then we still need the fields
if ( 0 != $woocommerce->cart->total ) {
return $fields;
}
// return the regular billing fields if we need shipping fields
if ( $woocommerce->cart->needs_shipping() ) {
return $fields;
}
// we don't need the billing fields so empty all of them except the email
unset( $fields['billing_country'] );
unset( $fields['billing_first_name'] );
unset( $fields['billing_last_name'] );
unset( $fields['billing_company'] );
unset( $fields['billing_address_1'] );
unset( $fields['billing_address_2'] );
unset( $fields['billing_city'] );
unset( $fields['billing_state'] );
unset( $fields['billing_postcode'] );
unset( $fields['billing_phone'] );
return $fields;
}
add_filter( 'woocommerce_billing_fields', 'patricks_billing_fields', 20 );
// That's all folks!
@BFTrick
Copy link
Author

BFTrick commented Nov 29, 2023

@maddisondesigns - Thanks for sharing this update! 🤓

@maddisondesigns
Copy link

maddisondesigns commented Nov 30, 2023

@maddisondesigns - Thanks for sharing this update! 🤓

@BFTrick No probs. Thanks for this great code snippet. 🙂 It's kinda annoying that WooCommerce doesn't do this by default, for digital products.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment