Allow (or prevent) Free Shipping when a gift card is redeemed

1. Download the free Code Snippets plugin: https://wordpress.org/plugins/code-snippets/
2. Create a Snippet with the following code:

Allow Free Shipping when a gift card is redeemed:
function custom_woocommerce_shipping_free_shipping_is_available( $is_available, $package, $wc_shipping_method ) {
    if ( true !== $is_available ) {
        $session_data = (array) WC()->session->get( PWGC_SESSION_KEY );
        if ( isset( $session_data['gift_cards'] ) && count( $session_data['gift_cards'] ) > 0 ) {
            $is_available = true;
        }
    }

    return $is_available;
}
add_filter( 'woocommerce_shipping_free_shipping_is_available', 'custom_woocommerce_shipping_free_shipping_is_available', 10, 3 );
Do not allow Free Shipping when a gift card is redeemed:
function custom_woocommerce_shipping_free_shipping_is_available( $is_available, $package, $wc_shipping_method ) {
    if ( true === $is_available ) {
        $session_data = (array) WC()->session->get( PWGC_SESSION_KEY );
        if ( isset( $session_data['gift_cards'] ) && count( $session_data['gift_cards'] ) > 0 ) {
            $is_available = false;
        }
    }

    return $is_available;
}
add_filter( 'woocommerce_shipping_free_shipping_is_available', 'custom_woocommerce_shipping_free_shipping_is_available', 99, 3 );
Skip to content