WooCommerce 在添加到购物车时检查购物车内容
WooCommerce check cart contents on add to cart
我只有一个产品要显示,但我提供了两个选项:付款计划(通过订阅插件处理)和单次付款。我将它们作为一个分组显示在我的网站上,并且两个选项都有一个 "Add to Cart" 按钮。我不希望任何一个选项与另一个选项同时出现在购物车中。我想做的是
A) 每次点击添加到购物车前清空购物车。
或
B) 检查购物车是否已经包含产品(通过 productid),如果选择全额付款,则删除付款计划,反之亦然。这是我为这个选项想出的一些东西,但我有点迷路,它的功能不太正确。
global $woocommerce;
if ($product_id = 66){
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key;
if($cart_item['product_id'] == '69'){
//remove single product
$woocommerce->cart->remove_cart_item($cart_item_key);
}
}
}
elseif ($product_id = 69){
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key;
if($cart_item['product_id'] == '66'){
//remove single product
$woocommerce->cart->remove_cart_item($cart_item_key);
}
}
}
我正在考虑将此添加到 try/catch 之前的 add_to_cart 方法以抛出任何错误。谁能帮我想出更好的解决方案?
清空购物车会很容易
add_filter( 'woocommerce_add_to_cart_validation', 'so_31392001_empty_cart', 10, 3 );
function so_31392001_empty_cart( $valid, $product_id, $quantity ) {
WC()->cart->empty_cart();
return $valid;
}
我只有一个产品要显示,但我提供了两个选项:付款计划(通过订阅插件处理)和单次付款。我将它们作为一个分组显示在我的网站上,并且两个选项都有一个 "Add to Cart" 按钮。我不希望任何一个选项与另一个选项同时出现在购物车中。我想做的是
A) 每次点击添加到购物车前清空购物车。
或
B) 检查购物车是否已经包含产品(通过 productid),如果选择全额付款,则删除付款计划,反之亦然。这是我为这个选项想出的一些东西,但我有点迷路,它的功能不太正确。
global $woocommerce;
if ($product_id = 66){
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key;
if($cart_item['product_id'] == '69'){
//remove single product
$woocommerce->cart->remove_cart_item($cart_item_key);
}
}
}
elseif ($product_id = 69){
foreach ( $woocommerce->cart->get_cart() as $cart_item_key => $cart_item ) {
echo $cart_item_key;
if($cart_item['product_id'] == '66'){
//remove single product
$woocommerce->cart->remove_cart_item($cart_item_key);
}
}
}
我正在考虑将此添加到 try/catch 之前的 add_to_cart 方法以抛出任何错误。谁能帮我想出更好的解决方案?
清空购物车会很容易
add_filter( 'woocommerce_add_to_cart_validation', 'so_31392001_empty_cart', 10, 3 );
function so_31392001_empty_cart( $valid, $product_id, $quantity ) {
WC()->cart->empty_cart();
return $valid;
}