Enable free shipping for two or more cart items in Woocommerce

前端 未结 1 1224
感动是毒
感动是毒 2021-01-27 04:11

In Woocommerce, I want to offer free shipping based on the number of cart items. First, I began looking at the available plugins and I can\'t find any simple solution based on q

相关标签:
1条回答
  • 2021-01-27 04:36

    There are some mistakes in your code, like missing arguments, complications and outdated things… Try the following instead:

    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']);
    
    0 讨论(0)
提交回复
热议问题