WooCommerce: Vaciar carrito al salir

Si tienes una tienda online creada con WooCommerce, cuando un usuario añade artículos a su carrito de compra, aunque salga de la sesión se mantienen ahí los artículos para cuando vuelva a conectarse.

Esto, que normalmente es cómodo, incluso interesante para aplicar estrategias de evitar abandonos de carrito, otras veces puede suponer un inconveniente, incluso problemas con el RGPD, o simplemente prefieres que se vacíe el carrito en cada sesión.

Sea cual fuera el motivo, si quieres que WooCommerce vacíe el carrito de los usuarios al salir de la sesión solo tienes que añadir esta función a tu plugin de personalizaciones:

function vaciar_carrito_al_salir() {
    if( function_exists('WC') ){
        WC()->cart->empty_cart();
    }
}
add_action('wp_logout', 'vaciar_carrito_al_salir');

 

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(8 votos, promedio: 4.8)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

7 comentarios en “WooCommerce: Vaciar carrito al salir”

  1. Muy útil esa función, yo la necesité usar para solucionar un bug en un WooCommerce en el que se venden entradas (en vez de productos físicos) y que no hay carrito como tal, directamente les mando al checkout con el tipo de entrada ya seleccionada(hay 3 tipos de entrada disponibles), listo para poner los datos y comprar.

    Resulta que si alguien va al checkout, no hace la compra y se va a otra pestaña y luego vuelve a querer una entrada, se le iban sumando las entradas… Entonces lo que hago es usar el filtro de «woocommerce_add_cart_item_data» para que «resetee» el carrito cada vez que se añade un nuevo item, de tal modo que solo se puede comprar una sola entrada.

    Gracias por compartir!!

    1. Guillermo Piris

      ¡Hoa, Laura!

      ¿Podrías compartir el código que has utilizado? Necesito exactamente la misma función (que al salir del carrito se resetee para que al añadir un producto nuevo sólo aparezca este último en el carrito)

      ¡Gracias!

      1. Hola Guillermo!

        Aquí lo tienes:

        add_filter( 'woocommerce_add_cart_item_data', 'woo_custom_add_to_cart' );

        function woo_custom_add_to_cart( $cart_item_data ) {

        global $woocommerce;
        $woocommerce->cart->empty_cart();

        // Do nothing with the data and return
        return $cart_item_data;
        }

        1. Esta función esta mucho mejor que la que estaba aqui publicada, es más util que la de arriba deberian hacer un post con este código, era lo que buscaba.

        2. Mónica Portugal Iglesias

          Hola! Yo también buscaba lo mismo y me funciona perfectamente! Mil gracias!!!
          Pero en mi caso tengo dos partes diferenciadas en mi tienda donde por una parte quiero tener esta funcionalidad de añadir uno y solo un producto. Pero tengo otra parte en la que necesito que funcione como un carrito normal…tengo una floristería y necesito separar dos tipos de líneas de producto.
          Me gustaría saber cómo se podría crear una función para borrar el carrito y llamarla cuando me sea necesario.

          Muchas gracias de verdad porque esta solución de momento me viene de lujo!

  2. Rafael De La Torre

    Hola Fernando:

    ¿Y sería posible, por ejemplo, vaciar el carrito transcurridas 3 horas de cerrar la sesión el usuario?

    Gracias. Un saludo.

  3. Hola buen día, Tengo una web que aun no esta publicada, la cual solo va a vender reservas. Tras añadir ese producto desde un plugin (wp hotel Booking) redirijo a la pagina de pago (checkout).

    Hasta ahí todo correcto, pero me gustaria que si el cliente en ese momento no acaba la compra (no realiza el pago) y sale de la pagina checkout a cualquier otra del menú, automáticamente su reserva se eliminará» y vacíe el carro; de tal manera que si el cliente quisiera comprar, tendría que iniciar nuevamente el proceso.

    He probado varias cosas, pero no encuentro ningun plugin ni ninguna manera de realizar esto tal y como lo necesito.

    Necesito que todo sea automatico, de tal manera que segun añade la reserva se crea el carrito y le lleva a la pagina de pago. Si realiza el pago se confirma la reserva, pero si abandona esa pagina, el carrito se borra y esa reserva desaparece; pero solo ha de desaparecer al abandonar el carro.

    He visto por internet opciones para borrar el carro cuando finaliza la sesión, pero tampoco me vale. Seria un poco adaptar este código:

    function vaciar_carrito_al_salir() {

    if( function_exists(‘WC’) ){

    WC()->cart->empty_cart();

    }

    }

    add_action(‘wp_logout’, ‘vaciar_carrito_al_salir’);

    para que lo ejecute al salir de la pagina carro de compras. … y no se como hacerlo tengo 2 meses en wordpress tienes idea de donde encuentro la solución? gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido