Hide checkout shipping fields section for specific shipping method in WooCommerce Hide checkout shipping fields section for specific shipping method in WooCommerce wordpress wordpress

Hide checkout shipping fields section for specific shipping method in WooCommerce


PHP is not the way as this an event on a "client side" (not on "server side"), so it requires to use jQuery. So to hide shipping fields section for a specific shipping method, you will use the following:

// Auto Show hide checkout shipping fields section based on chosen shipping methodsadd_action( 'wp_footer', 'custom_checkout_field_script' );function custom_checkout_field_script() {    // Only on checkout page    if( is_checkout() && ! is_wc_endpoint_url() ):    // HERE below define your local pickup shipping method    $local_pickup = 'local_pickup:1';    // Jquery code start    ?>    <script>        jQuery(function($){            var a = 'checked',                      b = 'input#ship-to-different-address-checkbox',                 c = 'input[name^="shipping_method"]',                   d = '<?php echo $local_pickup; ?>',                     e = c + ':' + a                f = 'div.woocommerce-shipping-fields,' + b;            // 1. On load: when the chosen shipping method is our defined shipping method            if( $(e).val() === d ) {                // Hide shipping fields section                $(f).hide();             }            // 2. On shipping method "change" (Live event)            $( 'form.checkout' ).on( 'change', c, function() {                // When the chosen shipping method is our defined shipping method                if( $(e).val() === d ) {                    // if the checkbox is checked, uncheck it first                    if ( $(b).prop(a) ) {                        $(b).click();                    }                    // Hide shipping fields section                    $(f).hide();                } else if ( $(e).val() !== d ) {                    // show closed shipping fields section with (unchecked checkbox)                    $(f).show();                                    }            });        });    </script>    <?php    endif;}

Code goes in functions.php file of your active child theme (or active theme). Tested and works.

Related: How to make ship to different address checked when using Free Shipping and Flat Rate?