• Resolved mkaiit

    (@mkaiit)


    Hello I tried to Google and try to understand this but nothing is working with me I am selling courses and I have put all of them to be virtual products and they are using a LearnDash plug-in however in the check out it is still asking people for their full address and all of them are mandatory how to change this without a plug-in please?

Viewing 2 replies - 1 through 2 (of 2 total)
  • Hey @mkaiit,

    Add this snippet of code to your theme functions.php

    <?php
    
    add_filter( 'woocommerce_checkout_fields' , 'woo_remove_billing_checkout_fields' );
    
    /**
     * Remove unwanted checkout fields
     *
     * @return $fields array
    */
    function woo_remove_billing_checkout_fields( $fields ) {
        
        if( woo_cart_has_virtual_product() == 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']);
    	    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;
    }
    
    /**
     * Check if the cart contains virtual product
     *
     * @return bool
    */
    function woo_cart_has_virtual_product() {
      
      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
    	  $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;
    
    }

    Read more…

    Cheers ??
    Nazreen.

    Plugin Support RK a11n

    (@riaanknoetze)

    Hi there,

    To remove some of the checkout fields, you could use the code highlighted above OR you could use a plugin like https://woocommerce.com/products/woocommerce-checkout-field-editor/

    It is, however, important to note that remove those fields from the checkout page can break your payment gateway as some of the payment gateways need to those fields to verify the billing address of the customer.

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Checkout Feilds for virtual products’ is closed to new replies.