Mat*_*erg 19 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_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);
Run Code Online (Sandbox Code Playgroud)
如果客户决定删除项目,那么此声明为真,我希望能够再次删除它.
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我无法从购物车中删除产品.任何想法在这里做错了什么?一直在寻找,但没有找到任何适合我的解决方案.
解
在@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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
Roh*_*ner 18
我认为你使用remove_cart_item
不当.如果您浏览文档,您会发现它接受cart_item_key作为参数(如注释中提到的wisdmLabs).
您正在使用它:
WC()->cart->remove_cart_item($product_3);
Run Code Online (Sandbox Code Playgroud)
试试这个:
WC()->cart->remove_cart_item($cart_item_key);
Run Code Online (Sandbox Code Playgroud)
更新该行后,我认为您将能够删除该产品.
将其用于最新版本的 WooCommerce:
$cartId = WC()->cart->generate_cart_id( 'PUT PRODUCT ID IN HERE' );
$cartItemKey = WC()->cart->find_product_in_cart( $cartId );
WC()->cart->remove_cart_item( $cartItemKey );
Run Code Online (Sandbox Code Playgroud)
将产品 ID 替换为您的产品 ID。
归档时间: |
|
查看次数: |
25224 次 |
最近记录: |