Title: sunjack's Replies | WordPress.org

---

# sunjack

  [  ](https://wordpress.org/support/users/sunjack/)

 *   [Profile](https://wordpress.org/support/users/sunjack/)
 *   [Topics Started](https://wordpress.org/support/users/sunjack/topics/)
 *   [Replies Created](https://wordpress.org/support/users/sunjack/replies/)
 *   [Reviews Written](https://wordpress.org/support/users/sunjack/reviews/)
 *   [Topics Replied To](https://wordpress.org/support/users/sunjack/replied-to/)
 *   [Engagements](https://wordpress.org/support/users/sunjack/engagements/)
 *   [Favorites](https://wordpress.org/support/users/sunjack/favorites/)

 Search replies:

## Forum Replies Created

Viewing 2 replies - 1 through 2 (of 2 total)

 *   Forum: [Plugins](https://wordpress.org/support/forum/plugins-and-hacks/)
    In
   reply to: [[WooCommerce] Local pickup choice even if shipping is free](https://wordpress.org/support/topic/local-pickup-choice-even-if-shipping-is-free/)
 *  Thread Starter [sunjack](https://wordpress.org/support/users/sunjack/)
 * (@sunjack)
 * [10 years, 1 month ago](https://wordpress.org/support/topic/local-pickup-choice-even-if-shipping-is-free/#post-7211204)
 * Thanks!
    By the way I’ve tried with this:
 *     ```
       /**
        * woocommerce_package_rates is a 2.1+ hook
        */
       add_filter( 'woocommerce_package_rates', 'hide_shipping_when_free_is_available', 10, 2 );
   
       /**
        * Hide shipping rates when free shipping is available
        *
        * @param array $rates Array of rates found for the package
        * @param array $package The package array/object being shipped
        * @return array of modified rates
        */
       function hide_shipping_when_free_is_available( $rates, $package ) {
   
        	// Only modify rates if free_shipping is present
         	if ( isset( $rates['free_shipping'] ) ) {
   
         		// To unset a single rate/method, do the following. This example unsets flat_rate shipping
         		unset( $rates['flat_rate'] );
   
       	}
   
       	return $rates;
       }
       ```
   
 * but I still can’t see local pickup when shipping is free.
 *   Forum: [Plugins](https://wordpress.org/support/forum/plugins-and-hacks/)
    In
   reply to: [[WooCommerce] Local pickup choice even if shipping is free](https://wordpress.org/support/topic/local-pickup-choice-even-if-shipping-is-free/)
 *  Thread Starter [sunjack](https://wordpress.org/support/users/sunjack/)
 * (@sunjack)
 * [10 years, 1 month ago](https://wordpress.org/support/topic/local-pickup-choice-even-if-shipping-is-free/#post-7211199)
 * Hi Caleb,
    thanks for your answer.
 * The problem was the following code snippet I’ve added to my functions.php to 
   disable flat rate when shipping is free:
 *     ```
       /**
        * Hide ALL shipping options when free shipping is available and customer is NOT in certain states
        * Hide Free Shipping if customer IS in those states
        *
        * UPDATED FOR WOOCOMMERCE 2.1
        *
        * Change $excluded_states = array( 'AK','HI','GU','PR' ); to include all the states that DO NOT have free shipping
        */
       add_filter( 'woocommerce_package_rates', 'hide_all_shipping_when_free_is_available' , 10, 2 );
   
       /**
        * Hide ALL Shipping option when free shipping is available
        *
        * @param array $available_methods
        */
       function hide_all_shipping_when_free_is_available( $rates, $package ) {
   
       	$excluded_states = array( 'AK','HI','GU','PR' );
       	if( isset( $rates['free_shipping'] ) AND !in_array( WC()->customer->shipping_state, $excluded_states ) ) :
       		// Get Free Shipping array into a new array
       		$freeshipping = array();
       		$freeshipping = $rates['free_shipping'];
   
       		// Empty the $available_methods array
       		unset( $rates );
   
       		// Add Free Shipping back into $avaialble_methods
       		$rates = array();
       		$rates[] = $freeshipping;
   
       	endif;
   
       	if( isset( $rates['free_shipping'] ) AND in_array( WC()->customer->shipping_state, $excluded_states ) ) {
   
       		// remove free shipping option
       		unset( $rates['free_shipping'] );
   
       	}
   
       	return $rates;
       }
       ```
   
 * I’d like to hide flat rate when shipping is free without causing other conflicts.
 * Thanks,
    Alberto

Viewing 2 replies - 1 through 2 (of 2 total)