Eliminar producto en el carrito usando ajax en woocommerce

2 minutos de lectura

Me gustaría eliminar el producto del carrito de woocommerce usando ajax sin hacer clic en el enlace.

Si ha encontrado este tipo de funcionalidad, por favor ayúdenos.

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();
}

podrías usar el WC_Cart set_quantity método

Y haz esto en tu 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);
}

  • Solo tenga en cuenta que este código no funcionará para un producto variable. En este caso, tendrá que agregar el $variation_id a la función generate_cart_id() o pasas el $cart_id (en realidad se llama correctamente $cart_item_key desde el script ajax ya.

    – rassoh

    23 mayo 2015 en 14:30


  • Parece que no puedo hacer que funcione para un producto variable. Pasé mi ID de variación como un parámetro en generate_cart_id, como lo indica la documentación, pero no pasa nada. ¿Me estoy olvidando de algo?

    – Pablo M

    30 ago. 15 a las 15:55

  • ¿Puede aclarar aquí dónde poner esta función?

    – Lipsa

    06 ene.

  • Debe agregar ese código en el php llamado en ajax. Debo decir que no estoy seguro de que esto todavía funcione con versiones recientes de woo commerce

    –Greg Berger

    06 ene.

  • ¿Alguien podría implementar esto en un producto variable? stackoverflow.com/questions/39286294/…

    – cutez7boyz

    03 sep.

Eliminar producto en el carrito usando ajax en woocommerce
usuario6172224

utilizar este :

$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);
    }
}

Eliminar producto en el carrito usando ajax en woocommerce
José

Prueba este:

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]);

 }
}

.

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad