Hola, @charlie0412:
Lamentamos no haber respondido antes. Por alguna razón, tu mensaje no apareció en los debates sin respuesta, que son a los que le damos prioridad, así que pasó desapercibido… hasta ahora. Voy a comentarlo a los moderadores para intentar entender por qué sucedió esto.
Mientras tanto, aunque es muy probable que hayas resuelto por tu cuenta a estas alturas, te dejo una revisión del código que dejaste arriba, que debería funcionar tanto en la barra lateral como en la página de detalles del carrito:
/**
* WooCommerce + WoodMart:
* Añade un botón para vaciar el carrito desde la barra lateral y en la página de detalles del carrito
*/
add_action( 'init', 'woocommerce_clear_cart_url' );
function woocommerce_clear_cart_url() {
global $woocommerce;
if ( isset( $_GET['empty-cart'] ) && $_GET['empty-cart'] == 'yes' ) {
$woocommerce->cart->empty_cart();
}
}
add_action( 'woocommerce_cart_coupon', 'woocommerce_empty_cart_button' );
add_action( 'woocommerce_widget_shopping_cart_buttons', 'woocommerce_empty_cart_button' );
function woocommerce_empty_cart_button() {
$cart_url = wc_get_cart_url();
echo '<a href="'.$cart_url.'?empty-cart=yes" class="button empty_cart" title="' . esc_attr( 'Vaciar Carrito', 'woocommerce' ) . '">' . esc_html( 'Vaciar Carrito', 'woocommerce' ) . '</a>';
}
add_action( 'wp_footer', 'custom_scripts', 10, 1 );
function custom_scripts(){
?>
<script type="text/javascript">
(function($){
$(document).ready(function(){
$(document).on('click','.empty_cart',function(e){
e.preventDefault();
if(confirm('¿Estás seguro de que deseas vaciar el carrito?')){
var url = $(this).attr('href');
window.location = url;
}
});
});
})(jQuery);
</script>
<?php
}
Hola @yordansoares:
Agradecido de su respuesta, sin importar que haya transcurrido algún tiempo, le comento que le había dado solución al problema con el uso de un plugin, aún así continúo con el deseo de no usar plugins en la medida de lo posible. He probado el código que amablemente me ha enviado pero desafortunadamente sigue con el mismo comportamiento que describí al principio, es decir, sin importar si acepto o cancelo , el carrito se vacía de cualquier manera, vuelvo a recordar que sólo me ocurre con la plantilla Woodmart, en las otras que he probado funciona perfectamente.
¿Podrías decirme qué versión de WoodMart estás utilizando?
Es probable que ese sea el problema: La última versión es la 7.4.3.
Casualmente, un cliente tiene este tema, así que probé en un sitio de ensayo y a mí me funcionó bien con la última versión, así que creo que al actualizar el tema, se debería resolver el problema.
Por cierto, ten en cuenta que, aunque coincidió el caso de que conozco el tema y tengo acceso a él, normalmente, no brindamos ayuda con problemas relacionados con temas o plugins de pago.
Entiendo, intentaré actualizando el tema, muchas gracias
que plugin me pueden sugerir para hacer esto?
Hola, @yssr:
En realidad, nunca he necesitado aplicar este comportamiento en una tienda, por eso no podría recomendarte un plugin en específico, pero podrías probar el código que compartí arriba.
@yordansoares me puedes indicar donde debo poner el código que compartiste. Lo mío es un woocommerce.
Saludos @yssr:
Con el plugin Woocommerce Cart Items Bulk Deletion puedes insertar fácilmente un botón en la página del carrito para vaciar el mismo, también puedes usar el código proporcionado por @yordansoares, que va en el archivo functions.php de tu tema, este archivo puedes localizarlo en la administración de WordPress en Apariencia–>Editor de archivos de temas, lo recomendable es aplicar el código en el functions.php de un tema hijo para que no pierdas los cambios si el tema se actualiza, en la siguiente URL hay un artículo muy bien explicado sobre los temas hijos.