Woocommerce改变购物车中每件商品的最低限额

时间:2017-03-22 09:56:13

标签: php wordpress woocommerce cart hook-woocommerce

我有几种产品只有在最小数量超过一定数量时才能购买。

我在我的孩子主题functions.php中写了一段代码来改变产品的最小数量。

function wpa116693_filter_min_quantity( $min, $product ){

    if ( has_term ( '5', 'product_tag' ) ){
        return 5;
    }

    if ( has_term ( '10', 'product_tag' ) ){
        return 10;
    }

    if ( has_term ( '6', 'product_tag' ) ){
        return 6;
    }
}
add_filter( 'woocommerce_quantity_input_min', 'wpa116693_filter_min_quantity', 10, 2 );

它的作用是,如果它找到带有标签5的产品,那么它会将数量min更改为5.这适用于单个产品页面,但它在购物车页面中不起作用。我可以低于购物车页面中的最小数量。我认为它不起作用,因为“has_term”在购物车页面中不起作用。

我也想在购物车页面上工作。 请帮我解决一下,谢谢。

1 个答案:

答案 0 :(得分:1)

您需要将您的功能挂钩到woocommerce_cart_loaded_from_session,如下所示:

add_action('woocommerce_cart_loaded_from_session', 'wh_checkAndUpdateCart');

function wh_checkAndUpdateCart()
{

    //if the cart is empty do nothing
    if (WC()->cart->get_cart_contents_count() == 0)
    {
        return;
    }

    foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item)
    {
        $product_id = $cart_item['product_id']; // Product ID
        $product_qty = $cart_item['quantity']; // Product quantity

        if (has_term(5, 'product_tag', $product_id) && ($product_qty > 5))
        {
            WC()->cart->set_quantity($cart_item_key, 5);
        }
        if (has_term(10, 'product_tag', $product_id) && ($product_qty > 10))
        {
            WC()->cart->set_quantity($cart_item_key, 10);
        }
        if (has_term(6, 'product_tag', $product_id) && ($product_qty > 6))
        {
            WC()->cart->set_quantity($cart_item_key, 6);
        }
    }
}

代码进入活动子主题(或主题)的function.php文件。或者也可以在任何插件php文件中。
代码已经过测试并且有效。

希望这有帮助!