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?