gpt4 book ai didi

php - 如果购物车包含特定类别 (WooCommerce),则阻止添加到购物车

转载 作者:行者123 更新时间:2023-12-05 01:44:38 25 4
gpt4 key购买 nike

我有一个包含 5 个类别的商店。它是多供应商,并且由于运输的复杂性,当它们单独在购物车中时,我只能销售一个特定类别(“油漆”)的产品。因此,当购物车包含油漆时,我需要防止将任何非油漆产品添加到购物车,并显示错误消息,并且我需要防止将油漆产品添加到包含任何其他类别的购物车,并显示错误消息。

我试图从我在 Stackoverflow 和其他地方找到的片段中拼凑这段代码。逻辑似乎在我的大脑中起作用,但是当我尝试实现代码(通过 functions.php)时,它会阻止任何产品被添加到购物车,除非购物车是空的。

这是我的代码:

//*** Prevent mixture of paint and other prods in same cart ***//
function dont_add_paint_to_cart_containing_other() {

// Set flag false until we find a product in cat paint
$cat_check = false;

// Set $cat_check true if a cart item is in paint cat
foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {

$product = $cart_item['data'];

if ( has_term( 'paint', 'product_cat', $product->id ) ) {
$cat_check = true;
// break because we only need one "true" to matter here
break;
}
}
// Return true if cart empty
if ( WC()->cart->get_cart_contents_count() == 0 ) {
return true;
}
// If cart contains paint and product to be added is not paint, display error message and return false.
elseif ( $cat_check && get_queried_object()->term_id != '245778522') {
wc_add_notice( 'Sorry, you can only purchase paint products on their own. To purchase this product, please checkout your current cart or empty your cart and try again' , 'error' );
return false;
}
// If cart contains a product that is not paint and product to be added is paint, display error message and return false.
elseif (!$cat_check && get_queried_object()->term_id = '245778522') {
wc_add_notice( 'Sorry, you can only purchase paint products on their own. To purchase this product, please checkout your current cart or empty your cart and try again' , 'error' );
return false;
}
// Otherwise, return true.
return true;
}

add_filter( 'woocommerce_add_to_cart_validation', 'dont_add_paint_to_cart_containing_other' );

最佳答案

//*** Prevent mixture of paint and other prods in same cart ***//
function dont_add_paint_to_cart_containing_other($validation, $product_id) {

// Set flag false until we find a product in cat paint
$cart_has_paint = false;

// Set $cat_check true if a cart item is in paint cat
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {

$product = $cart_item['data'];

if (has_term('paint', 'product_cat', $product->id)) {
$cart_has_paint = true;
// break because we only need one "true" to matter here
break;
}
}

$product_is_paint = false;
if (has_term('paint', 'product_cat', $product_id)) {
$product_is_paint = true;
}

// Return true if cart empty
if (!WC()->cart->get_cart_contents_count() == 0) {
// If cart contains paint and product to be added is not paint, display error message and return false.
if ($cart_has_paint && !$product_is_paint) {
wc_add_notice('Sorry, you can only purchase paint products on their own. To purchase this product, please checkout your current cart or empty your cart and try again', 'error');
$validation = false;
}
// If cart contains a product that is not paint and product to be added is paint, display error message and return false.
elseif (!$cart_has_paint && $product_is_paint) {
wc_add_notice('Sorry, you can only purchase paint products on their own. To purchase this product, please checkout your current cart or empty your cart and try again', 'error');
$validation = false;
}
}
// Otherwise, return true.
return $validation;
}

add_filter('woocommerce_add_to_cart_validation', 'dont_add_paint_to_cart_containing_other', 10, 2);

改成这个

关于php - 如果购物车包含特定类别 (WooCommerce),则阻止添加到购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45189297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com