我正在尝试向客户发送最多3个免费样品并免费送货。
我创建了一些价格为0的产品并将其设置为"样品"产品类别。
此特定产品有选项"单独销售"因此,客户只能拥有每个样本中的一个。
我无法弄清楚如何在购物车上仅允许此产品类别中最多3个样品产品。
感谢任何帮助。
答案 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过滤器。