如何修改WooCommerce代码仅限制指定商品不可重复购买?
解决方案
要实现仅限制指定产品ID只能购买一次、其余商品可多次购买的功能,你可以这样修改代码:
add_filter( 'woocommerce_add_to_cart_validation', 'restrict_specific_products_single_purchase', 10, 4 ); function restrict_specific_products_single_purchase( $passed, $product_id, $quantity, $variation_id = null ) { // 定义需要限制只能购买一次的产品ID数组,把你的目标ID填进去 $restricted_product_ids = array( 123, 456, 789 ); // 如果当前添加的产品不在限制列表里,直接通过验证 if ( ! in_array( $product_id, $restricted_product_ids ) ) { return $passed; } $total_in_cart = 0; // 遍历购物车,统计当前限制产品已添加的数量 foreach ( WC()->cart->get_cart() as $cart_item ) { if ( $cart_item['product_id'] === $product_id ) { $total_in_cart += $cart_item['quantity']; } } // 如果已购数量 + 当前要添加的数量超过1,阻止添加并提示错误 if ( $total_in_cart + $quantity > 1 ) { wc_add_notice( __( '该商品仅允许购买一次,无法重复添加。', 'woocommerce' ), 'error' ); return false; } return $passed; }
关键说明:
- $restricted_product_ids:把你需要限制的产品ID逐个添加到这个数组里,示例中的123、456为占位ID,替换成你的实际产品ID即可
- 代码仅对数组内的产品生效购买限制,其余商品可正常多次添加到购物车
- 当用户尝试重复添加限制类商品时,会弹出错误提示并阻止操作
内容的提问来源于stack exchange,提问作者Sjoerd
相关产品推荐
相关产品推荐

