我试图限制客户通过woocommerce购买一种产品。我使用以下代码:
export const slideInAnimation = trigger('routeAnimations', [
transition('* <=> *', [
style({ position: 'fixed' }),
query(
':enter, :leave',
[
style({
position: 'fixed',
top: 0,
left: 0
})
],
{ optional: true }
),
query(':enter', [style({ top: '-100%' })], { optional: true }),
query(':leave', animateChild(), { optional: true }),
group([
query(':leave', [animate('900ms ease-in', style({ top: '100%' }))], {
optional: true
}),
query(':enter', [animate('900ms ease-in', style({ top: '0%' }))], {
optional: true
})
]),
query(':enter', animateChild(), { optional: true })
])
]);
问题是我不能在同一个变量产品中使用两个变体。我需要一些东西来限制每个订单的一种产品,但是可以允许客户使用同一变量产品的多个变体。
示例:客户购买了黑色的三星j7智能手机,同时购买了蓝色的三星j7。现在,如果客户想要另外添加Sony Xperia智能手机,则必须再次订购。
感谢您的帮助。
答案 0 :(得分:0)
以下内容将限制“添加到购物车”以仅允许来自同一产品的商品(因此对于可变产品,它将允许向购物车添加同一可变产品的不同变体)
add_filter( 'woocommerce_add_to_cart_validation', 'filter_add_to_cart_validation', 10, 4 );
function filter_add_to_cart_validation( $passed, $product_id, $quantity, $variation_id = 0 ) {
if( WC()->cart->is_empty() )
return $passed;
$product = wc_get_product($product_id);
$items_in_cart = [];
if ( $product && 'variable' !== $product->get_type() ) {
$passed = false;
} elseif ( $product && 'variable' === $product->get_type() ) {
$items_in_cart[$product_id] = $product_id;
// Loop through cart items
foreach( WC()->cart->get_cart() as $cart_item ){
$items_in_cart[$cart_item['product_id']] = $cart_item['product_id'];
}
if( count($items_in_cart) > 1 )
$passed = false;
}
// Avoid add to cart and display an error notice
if( ! $passed )
wc_add_notice( __("Different items are not allowed on an order.", "woocommerce" ), 'error' );
return $passed;
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。