WooCommerce has the ability to remove the address fields in the checkout form of the billing and shipping forms, this is great if you do not require the address fields as you may have a virtual/download only products that don’t require shipping, less fields to fill out = happy customers.


You can remove address field layouts, so you have just name and email.


Remove Billing Fields

This is all done with the woocommerce_billing_fields filter, so in your themes functions.php you can add the following…

So this will remove or unset all the billing address fields if you want to keep a certain field in just remove the relevant line from the code snippet.

Remove Shipping Fields

If you have products that are linked to shipping, then the additional shipping fields also show, the woocommerce_shipping_fields filter can remove these, you probably want to keep most to ship the item, but might want to remove the shipping_company field for example.

What if you wanted to retain all the fields if the cart products contained shipped products but also wanted a trimmed down field selection if the cart only had virtual products – then you can use the looped carts items to determine if they are virtual only…

Ref. & Ref


  1. Jose on February 15, 2020 at 12:01 am

    Thanks, It worked perfectly for me!

  2. Alvina on August 26, 2019 at 11:17 am

    Thank you for sharing this tutorial. Can you please tell me why the checkout stop working after removing last name and middle name fields? Here is the code that I have seen https://www.cloudways.com/blog/how-to-edit-delete-fields-and-email-in-woocommerce-custom-checkout-fields/.I have almost implemented the same just change the fields name that I don’t want to showbut the checkout not working as the fields removed. Is there any other way to do this?

    function remove_additional_information_checkout($fields){
    unset( $fields[“billing_first_name”] );
    unset( $fields[“billing_middle_name”] );
    return $fields;
    add_filter( ‘woocommerce_billing_fields’, ‘remove_additional_information_checkout’ );

  3. hardik thakkar on April 30, 2019 at 4:25 am

    How can I do the opposite? When typing the address for some countries like Singapore, WooCommerce by default hides delivery suburb and state fields. Is there a way I can force those fields to be always visible?

  4. SuziQue on March 21, 2019 at 5:54 pm

    Is there a way to select for each product where or not an address is needed.
    I have both physical and digital products. I only need the address if they are ordering physical products.

    • Neil Gowran on March 23, 2019 at 12:18 am

      Good question – have added a snippet in the post.

  5. Patryk on March 13, 2019 at 9:08 am

    Is there possibility to set fields dependently on user role?
    In. example I have basic user and merchendiser
    For basic user I don’t need address, only name and email for payment
    but for Merchendiser I need those additional fields like: name of company, address of store etc.

  6. Melker Walter on June 28, 2017 at 7:31 am

    Great post, I always prefer coding than using a plugin for customizing woocommerce checkout page. I did also customize my checkout by changing the texts where I made a post here: http://www.22bulbjungle.com/woocommerce-change-text-on-checkout-page-quick-tutorial/

    Great write-up by the way!

  7. miguras on September 4, 2016 at 9:29 pm

    Hello. Great article. I made a plugin that do the same. You can disable/rearrange content inside the single product page and shop page. Also, you can remove checkout fields. I uploaded it to wordpress, so here you have the link WooEnhacer – WooCommerce Customizer if someone is interested.

Leave a Comment