Avisar en WooCommerce si un producto está ya en el carro

En esta entrada te voy a presentar un sencillo truco para avisar en WooCommerce si un producto está ya en el carro antes de que vuelva a añadirlo por equivocación.

Si el cliente hace finalmente un pedido, duplicando por error el número de artículos de un producto determinado, lo más probable es que cuando lo reciba, quiera efectuar la devolución del producto sobrante.

Está claro que los gastos de envío de la devolución corren a cargo del cliente y que hasta que tú no tengas en tus manos el producto, no tienes obligación de reembolsar el importe de la devolución. Pero vas a perder tiempo en la gestión y desde luego van a aumentar las probabilidades de que el cliente quede descontento, aunque la culpa no haya sido tuya.

Cuando la compra se hace a través de una tienda online y no en persona, es más fácil eximirse de responsabilidad y echar la culpa al vendedor.

Truco para comprobar si hay un producto repetido en el carro con WooCommerce.

El truco del que hablo consiste en usar un código snippet para WooCommerce, el cual se encarga de avisar automáticamente al cliente cuando va a añadir de nuevo un producto que ya está en el carro.

Avisar producto repetido en WooCommerce

El funcionamiento del código es bastante sencillo. Cuando el cliente entra en la página de catálogo o en la de un producto, el código snippet comprueba si el producto o los productos que está visualizando ya han sido añadidos al carro y en caso de que sea así, modifica el texto del botón de compra y muestra en su lugar el texto «Ya está en el carro«.

En realidad, puedes poner el texto que desees para el aviso editando la línea de código «return __(‘Ya está en el carro’ , ‘woocommerce’)» y cambiándola por la frase que desees.

Avisar antes de añadir mismo producto al carro en WooCommerce

Puede que esta técnica no tenga sentido usarla para cualquier tipo de producto, pero si puede ser útil cuando; vendes productos hechos a medida o personalizados, o productos exclusivos y de coste elevado como por ejemplo, joyas o relojes. En estos casos es poco probable que el cliente quiera comprar dos productos exactamente iguales.

Aún así, este código no bloquea el botón de compra en WooCommerce en ningún momento, solamente muestra un aviso. Por tanto, si de verdad el cliente tiene interés en repetir producto, puede hacerlo sin problema.

Sea cual sea el uso que le des, ya sabes que es posible avisar en WooCommerce si un producto está ya en el carro sin necesidad de instalar plugins, simplemente usando un sencillo código snippet.

Apúntate gratis a mi próxima masterclass en directo

12 comentarios en “Avisar en WooCommerce si un producto está ya en el carro”

  1. Buenas Antonio, gracias por el código, te querría preguntar, si queremos también bloquear el botón de compra para que no se pueda volver a añadir al carrito, ¿Qué podemos hacer?
    Gracias.

    1. Hola Miguel,

      Con el código que uso en la entrada no se puede reutilizar para eso y ahora mismo no conozco ningún plugin que te permita hacerlo.

      Hacerse, se podría hacer, pero habría que desarrollarlo.

      Un saludo!

      1. Ok, buenas Antonio.
        Ahí dejo el código:

        /** Aviso producto solo una vez */
        add_filter(‘single_add_to_cart_text’, ‘texto_perdonalizado_aviso_carrito’);
        function texto_perdonalizado_aviso_carrito() {

        global $woocommerce;

        foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        $_product = $values[‘data’];

        if( get_the_ID() == $_product->id ) {
        return __(‘El producto ya está en el carrito’, ‘woocommerce’);
        }
        }

        return __(‘Add to cart’, ‘woocommerce’);
        }
        /** Filtro producto solo una vez */
        add_filter( ‘woocommerce_add_to_cart_validation’, ‘valida_carrito’, 10, 5 );
        function valida_carrito( $passed, $product_id, $quantity, $variation_id = », $variations= » ) {
        global $woocommerce;

        $r = 1;
        foreach($woocommerce->cart->get_cart() as $cart_item_key => $values ) {
        $_product = $values[‘data’];

        if($product_id == $_product->id)
        $r = 0;
        }
        if($r == 0) {
        $passed = false;
        wc_add_notice( __( «El producto «.$product_id.» ya está en el carrito con una cantidad de «.».$quantity.».», si quieres volver a elegirn la misma cantidad tienes que completar primero la compra actual, puedes elegir otro paquete con otro diseño distinto, gracias y perdón por las moléstias…», ‘textdomain’ ), ‘error’ );
        }

        return $passed;
        }

        Recién salido del horno.

        ¡Gracias!

        1. Gracias! el codigo del post me está funcionando correctamente, pero este no me está bloqueando el botón, ¿que puede pasar?

          De hecho lo que me vendría perfecto es que al añadir al carrito un producto borre primero lo que haya en el carro ya que por el tipo de productos que vendemos (incripciones) sólo queremos que se venda uno cada vez

          Si pueden ayudarme!
          Gracias de nuevo

  2. Hola Antonio

    Mira lo que quiero hacer es parecido pero cuando la persona incluya un producto al carrito de compra se le active una ventana de popus con dos botones uno diciendole si quiere seguir comprando y el otro si quiere ir al carrito para procesar el pago. Ya compre el plugin Indeed Smart PopUp for WordPress e hice la ventana pero no se como activarlo con ese evento.

    Quisiera saber si me podrias ayudar para saber cual es el ID o el Class de wocommerce para el boton del carrito de compra, ya que en el plugin es lo que me pide para personalizarlo.

    Saludos

  3. Hola, Antonio! Cómo estás?
    Me gustaría contactarme con vos, ya que tengo un problemita con la traducción de un theme en la parte de woocommerce y quisiera saber qué posibilidades hay de solucionar eso.

    Te agradezco de antemano.

    Saludos cordiales.

    Héctor Moreno

    Skype: hectormoreno2238

Dejar un comentario

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

Responsable: Antonio Cantero, siendo la Finalidad; envío de mis publicaciones así como correos comerciales. La Legitimación; es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en mi plataforma de email marketing Active Campaign ubicada en EEUU y acogida al Privacy Shield. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos en contacto@woodemia.com