Woocommerce - 为购物车中包含特定属性的商品总数设置最小数量和购买倍数

问题描述 投票:0回答:0

我在一个销售葡萄酒的 woocommerce 网站上工作。我想为特定产品变体设置多次购买价值。

每个产品都有“bottle”属性(=>pa_bottle)和3个术语:1liter,2liters,3liters。

我希望当属性为“1 升”的项目总数是 3 的倍数时,购物车被视为有效。

例如这个购物车是有效的:

  • 1 x Prosecco 葡萄酒 - 1 升
  • 2 x Prosecco 葡萄酒 - 3 升
  • 2 x 香槟酒 - 1升

我找到了一个非常适合类别的脚本。我想要一个适用于该属性的类似脚本。

这是原剧本:

add_action( 'woocommerce_check_cart_items', 'woocommerce_check_cart_quantities' );
function woocommerce_check_cart_quantities() {
$multiples = 3;
$total_products = 0;
$category_ids = array( 74 );
$found = false;

foreach ( WC()->cart->get_cart() as $cart_item ) {
    if ( has_product_category( $cart_item['product_id'], $category_ids ) ) {
        
        $total_products += $cart_item['quantity'];
        $found = true;
    }
}
if ( ( $total_products % $multiples ) > 0 && $found )
    wc_add_notice( sprintf( __('You need to buy in quantities of %s products', 'woocommerce'), $multiples ), 'error' );
}

这里我尝试替换脚本

if ( has_product_category( $cart_item['product_id'], $category_ids ) ) {

与剧本

if ( has_term( '1liter', 'pa_bottle', $cart_item['product_id'] ) ) {

但它不起作用,因为它在购物车中的所有产品上设置了倍数,而我希望它只在具有 1 升属性的产品上设置它。

谢谢你的帮助。

woocommerce attributes product-quantity step
© www.soinside.com 2019 - 2024. All rights reserved.