WooCommerce – enable free shipping only if product class is found in cart.

<?php // Do not include this if already open!
/**
* Code goes in theme functions.php. Free Shipping Method must be enabled.
*/
add_filter( 'woocommerce_shipping_free_shipping_is_available', 'free_shipping_based_on_cart_shipping_class' );
function free_shipping_based_on_cart_shipping_class( $is_available ) {
/**
* This example enables free shipping only when an item is found in the cart with a class named 'free_shipping'
*/
$cart_items = WC()->cart->get_cart();
$found = false;
foreach ( $cart_items as $cart_item ) {
$product = $cart_item['data'];
$class = $product->get_shipping_class();
if ( 'free_shipping' === $class ) {
$found = true;
break;
}
}
return $is_available && $found;
}

view raw
functions.php
hosted with ❤ by GitHub

Posted by Mike Jolley

I help build things at Automattic.