Enable free shipping for two or more cart items in Woocommerce

In Woocommerce, if we want to offer free shipping based on the number of cart items.

If we want to do is: buy 2 of anything and get free shipping.

We can do this using below steps

add_filter( 'woocommerce_shipping_free_shipping_is_available', 'free_shipping_for_x_cart_items', 10, 3 );
function free_shipping_for_x_cart_items( $is_available, $package, $shipping_method ) {
    $item_count = WC()->cart->get_cart_contents_count();

    if ( $item_count == 1 ) {
        $notice = __("Add one more for free shipping");
        $is_available = false;
    } elseif ($item_count > 1) {
        $notice = __("You get free shipping");
        $is_available = true;
    }

    if ( isset($notice) ) {
        wc_add_notice( $notice, 'notice' );
    }
    return $is_available;
}

This code goes in function.php file of your active child theme (or active theme). Tested and works.

The WC_Cart method get_cart_contents_count() get the count of all items (including quantities).

To get the count of different cart items (without including quantities), replace the line:

$item_count = WC()->cart->get_cart_contents_count();

with this one:

$item_count = sizeof($package['contents']);

No comments:

Post a Comment