ajax 在woocommerce中使用ajax删除购物车中的产品

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/21900865/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-06 10:24:00  来源:igfitidea点击:

Remove product in the cart using ajax in woocommerce

ajaxwordpresswoocommerce

提问by user3331550

I would like to remove the product in the woocommerce cart using ajax without click the link.

我想在不单击链接的情况下使用 ajax 删除 woocommerce 购物车中的产品。

If you have encounter this kind of functionality, please help us.

如果您遇到此类功能,请帮助我们。

add_action( 'wp_footer', 'add_js_to_wp_wcommerce');

function add_js_to_wp_wcommerce(){ ?>
    <script type="text/javascript">
    jQuery('.remove-product').click(function(){
        var product_id = jQuery(this).attr("data-product_id");
        jQuery.ajax({
            type: 'POST',
            dataType: 'json',
            url: "/wp-admin/admin-ajax.php",
            data: { action: "product_remove", 
                    product_id: product_id
            },success: function(data){
                console.log(data);
            }
        });
        return false;
    });
    </script>
<?php }

add_action( 'wp_ajax_product_remove', 'product_remove' );
add_action( 'wp_ajax_nopriv_product_remove', 'product_remove' );
function product_remove() {
    global $wpdb, $woocommerce;
    session_start();
    foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item){
        if($cart_item['product_id'] == $_POST['product_id'] ){
            // Remove product in the cart using  cart_item_key.
            $woocommerce->cart->get_remove_url($cart_item_key);
        }
    }
    print_r($woocommerce->cart->get_cart());
    //echo json_encode(array('status' => 0));
    exit();
}

回答by Greg Berger

you could use the WC_Cart set_quantitymethod

你可以使用 WC_Cartset_quantity方法

And do as this in your php:

并在您的 php 中执行此操作:

$cart = WC()->instance()->cart;
$id = $_POST['product_id'];
$cart_id = $cart->generate_cart_id($id);
$cart_item_id = $cart->find_product_in_cart($cart_id);

if($cart_item_id){
   $cart->set_quantity($cart_item_id,0);
}

回答by user6172224

use this :

用这个 :

$cart = $woocommerce->cart;

foreach ($woocommerce->cart->get_cart() as $cart_item_key => $cart_item){
    if($cart_item['product_id'] == $_POST['product_id'] ){
        // Remove product in the cart using  cart_item_key.
        $cart->remove_cart_item($cart_item_key);
    }
}

回答by joseph

Try this one :

试试这个:

foreach ( $woocommerce->cart->cart_contents as $cart_item_key => $cart_item ) {

 if($cart_item['product_id'] == $product_id){

  unset($cartdetails->cart_contents[$cart_item_key]);

 }
}