You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 05:45:32