No puedo eliminar el último artículo del carrito. Agrego varios productos al carrito: elimino todos los artículos, pero no el último. Ajax funciona, muestra un mensaje de que el producto se ha eliminado del carrito, pero visualmente, no ha desaparecido. Después de actualizar la página, el carrito está vacío.
Tuve el mismo problema en uno de nuestros sitios web. He estado siguiendo el javascript en /woocommerce/assets/js/frontend/cart.js y noté que hay la siguiente línea de código $( '.woocommerce-cart-form__contents' ).closest( '.woocommerce' ).replaceWith( $cart_html ); que reemplaza todo el contenido del carrito de la página del carrito.
Lo más probable es que haya anulado la plantilla de carrito de woocommerce predeterminada y haya eliminado la clase .woocommerce-cart-form__contents de su plantilla personalizada, por lo tanto, el html no puede ser reemplazado por javascript.
Tienes 2 opciones para solucionar esto:
Opción 1: intente incluir .woocommerce-cart-form__contents en su plantilla cart.php
Opción 2: en caso de que prefiera no agregar esa clase, woocommerce activa el evento de javascript wc_cart_emptied cuando se ha vaciado el carrito. Por lo tanto, puede usar el siguiente código en el javascript de su tema para asegurarse de vaciar los elementos DOM de la página del carrito cuando se active:
/** * When Cart has been emptied we need to make sure that cart form and cart collaterals in /cart page are removed. * * @param {Event} e */ function cartEmptied(e) { //The below 2 elements can be changed according to the classes you use in your custom cart template var cartForm = $('.woocommerce-cart-form'); var cartCollaterals = $('.cart-collaterals'); if (cartForm.length > 0) { cartForm.remove(); } if (cartCollaterals.length > 0) { cartCollaterals.remove(); } } $(document.body).on('wc_cart_emptied', cartEmptied);