Php 删除具有$product_id的项目-WOOCERCOMME

Php 删除具有$product_id的项目-WOOCERCOMME,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,制作了一个功能,当客户达到特定数量时,可以将产品添加到购物车中 客户达到第3级并添加产品的示例。 // Bonus products $product_1 = '4751'; $product_2 = '4752'; $product_3 = '4753'; // Get cart value in a clean format $cart_total = WC()->cart->get_cart_subtotal(); $cart_total = html_entity_d

制作了一个功能,当客户达到特定数量时,可以将产品添加到购物车中

客户达到第3级并添加产品的示例。

// Bonus products
$product_1 = '4751'; 
$product_2 = '4752'; 
$product_3 = '4753'; 

// Get cart value in a clean format
$cart_total = WC()->cart->get_cart_subtotal();
$cart_total = html_entity_decode($cart_total, ENT_QUOTES, 'UTF-8');
$cart_total_format = strip_tags($cart_total);
$cart_value = preg_filter("/[^0-9]/", "", $cart_total_format);
$sum_raw = $cart_value;

// Set the sum level 
$level3 = '1500';

// Check sum and apply product
if ($sum_raw >= $level3) {

// Cycle through each product in the cart and check for match
$found = 'false';
foreach (WC()->cart->cart_contents as $item) {
    global $product;
    $product_id = $item['variation_id'];

    if ($product_id == $product_3) {
        $found = 'true';
    }
}

// If product found we do nothing 
if ($found == 'true') {}
// else we will add it
else {
    //We add the product
    WC()->cart->add_to_cart($product_3);
如果客户决定删除项目的,所以这句话是真的,我想能够删除它再次

if ($sum_raw < $level3) {

    // Trying to remove item
    foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) {
        if ($cart_item['variation_id'] == $product_3) {

            //remove single product
            WC()->cart->remove_cart_item($product_3);
        }
    }
}
if($sum_raw<$level3){
//正在尝试删除项目
foreach($woocommerce->cart->get_cart()作为$cart\u item\u key=>$cart\u item){
如果($cart\u item['variation\u id']==$product\u 3){
//删除单个产品
WC()->购物车->移除购物车项目($product_3);
}
}
}
Am无法从购物车中删除产品。你知道我做错了什么吗?一直在四处寻找,却没有找到适合我的解决方案

解决方案

在@Rohil_PHPBeginner&@WisdmLabs的帮助下,我找到了这个解决方案,它为我完成了这项工作

global $woocommerce;
// Check if sum
if ($sum_raw < $level3) {
    foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item) {

        if ($cart_item['variation_id'] == $product_3) {
            //remove single product
            $woocommerce->cart->remove_cart_item($cart_item_key);
        }
    }
}
global$woodcommerce;
//检查总数是否正确
如果($sum_raw<$level3){
foreach($woocommerce->cart->get_cart()作为$cart\u item\u key=>$cart\u item){
如果($cart\u item['variation\u id']==$product\u 3){
//删除单个产品
$woocommerce->cart->remove\u cart\u item($cart\u item\u key);
}
}
}

我认为您使用的
删除购物车项目不正确。如果您浏览,您会发现它接受购物车项目\u键作为参数(如评论中提到的Wisdmlab)

您是这样使用它的:

WC()->cart->remove_cart_item($product_3);
请尝试以下方法:

WC()->cart->remove_cart_item($cart_item_key);

更新该行后,我认为您将能够删除该产品。

将其用于最新版本的WooCommerce:

$cartId = WC()->cart->generate_cart_id( 'PRODUCT ID' );
$cartItemKey = WC()->cart->find_product_in_cart( $cartId );
WC()->cart->remove_cart_item( $cartItemKey );

将产品ID替换为您的。

WC\u购物车::删除购物车项目($Cart\u item\u key);更改WC()->购物车->删除购物车项目($product_3);对于这个?变量$product_3是什么?$product_3='4753',这是productremove\u cart\u item()的变体ID,它的参数为$cart\u item\u keyThank,这帮助我解决了这个问题。将使用解决方案更新我的帖子,以供其他人查看。