WooCommerce如何限制单产品仅可选购一种变体?
WooCommerce 手绘艺术品变体限购解决方案
方法一:使用自定义函数(推荐)
通过WooCommerce的钩子函数实现拦截逻辑,具体代码如下:
add_filter( 'woocommerce_add_to_cart_validation', 'restrict_multiple_variations_from_same_parent', 10, 3 ); function restrict_multiple_variations_from_same_parent( $passed, $product_id, $quantity ) { // 获取当前产品的父ID(变体取父产品ID,普通产品取自身ID) $product = wc_get_product( $product_id ); $parent_id = $product->get_parent_id() ? $product->get_parent_id() : $product_id; // 遍历购物车已有的商品 foreach ( WC()->cart->get_cart() as $cart_item ) { $cart_product = $cart_item['data']; $cart_parent_id = $cart_product->get_parent_id() ? $cart_product->get_parent_id() : $cart_product->get_id(); // 检查是否属于同一父产品且不是同一个变体 if ( $cart_parent_id === $parent_id && $cart_product->get_id() !== $product_id ) { wc_add_notice( '抱歉,您只能选购这款艺术品的一种画框变体', 'error' ); $passed = false; break; } } return $passed; }
代码说明
- 钩子
woocommerce_add_to_cart_validation会在商品添加到购物车前触发验证逻辑 - 先判断当前商品是否为变体,获取对应的父产品ID
- 遍历购物车,检查是否存在同个父产品的其他变体
- 若存在则阻止添加并弹出错误提示
- 将代码添加到当前主题的
functions.php文件,或创建自定义插件存放这段代码即可生效
方法二:使用插件(无需代码)
如果不想编写代码,可选择支持变体限购的WooCommerce插件:
- Advanced Quantity for WooCommerce:支持设置父产品下仅允许添加单个变体
- WooCommerce Product Quantity Limits:可针对父产品配置变体购买限制,确保每个订单只能选一种变体
启用插件后,在对应产品的设置面板中找到变体限制选项,勾选“仅允许选择一个变体”类的配置项即可。
内容的提问来源于stack exchange,提问作者MANnDAaR
相关产品推荐
相关产品推荐

