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;
return $is_available && $found;

view raw


hosted with ❤ by GitHub

Discuss on Twitter

Mike Jolley is a tech hobbyist, astrophotographer, retro gamer, and software engineer who works at Automattic and contributes to open-source projects such as WordPress and WooCommerce.