允许在Woocommerce中为特定产品类别添加最多3个产品

时间:2018-02-27 18:12:40

标签: php wordpress woocommerce categories product

我正在尝试向客户发送最多3个免费样品并免费送货。

我创建了一些价格为0的产品并将其设置为"样品"产品类别。

此特定产品有选项"单独销售"因此,客户只能拥有每个样本中的一个。

我无法弄清楚如何在购物车上仅允许此产品类别中最多3个样品产品。

感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

使用woocommerce_add_to_cart_validation动作挂钩可以轻松完成此操作,以限制客户最多使用"示例"产品类别,这种方式:

add_action('woocommerce_add_to_cart_validation', 'max_3_items_for_samples', 20, 3 );
function max_3_items_for_samples( $passed, $product_id, $quantity ) {
    // HERE define your product category ID, slug or name.
    $category = 'clothing';
    $limit = 3; // HERE set your limit
    $count = 0;

    // Loop through cart items checking for specific product categories
    foreach ( WC()->cart->get_cart() as $cat_item ) {
        if( has_term( $category, 'product_cat', $cat_item['product_id'] ) )
            $count++;
    }
    if( has_term( $category, 'product_cat', $product_id ) && $count == $limit )
        $count++;

    // Total item count for the defined product category is more than 3
    if( $count > $limit ){
        // HERE set the text for the custom notice
        $notice = __('Sorry, you can not add to cart more than 3 free samples.', 'woocommerce');
        // Display a custom notice
        wc_add_notice( $notice, 'error' );
        // Avoid adding to cart
        $passed = false;
    }

    return $passed;
}

代码放在活动子主题(或主题)的function.php文件中。

经过测试和工作。

答案 1 :(得分:0)

上述解决方案不起作用。 1)它允许您最初添加的数量超过首次添加产品时的限制。我认为这是因为验证是在将商品添加到购物车之前进行的,但是上面的功能会循环遍历购物车中已有的商品,并且2)它允许用户在购物车上输入所需数量的产品。 / cart /页面,因为未使用woocommerce_update_cart_validation过滤器。