Comprobar si un producto está en el carrito de WooCommerce

Hoy traigo otro pequeño snippet para que sepamos cómo comprobar si un producto en concreto está en el carrito.

Para ello usaremos la función «find_product_in_cart( $product_id )» de la siguiente forma:

La función «find_product_in_cart()» nos devolverá true si encuentra el producto que le pasamos como parámetro se encuentra en el carrito.

De esta forma podremos trabajar con este resultado para, por ejemplo, mostrar algo, o añadir ese producto al carrito porque siempre tiene que estar, como en el ejemplo del «Producto regalo» que ya hicimos en otro tutorial.

Por lo tanto, aquí teneís el código de este snippet que primero comprueba si el producto cuyo ID es 80 está en el carrito y si no está, lo añade automaticamente.

El video


Ahora vamos a modificar un poco el ejemplo de tal forma que queremos que se añada cierto producto al carrito siempre que ya exista en el carrito otro en concreto.

Para este ejemplo, al producto que añadimos lo seguiremos llamando «Producto regalo» y al otro, al que tiene que estar en el carrito para que se añada éste lo llamaremos «Producto promoción«.

Entonces lo que hacemos es modificar un poquito el código para que:

  • Compruebe que el «Producto promoción» está en el carrito.
  • Si está, añadir el «Producto regalo» automaticamente.
  • Además, si está, antes de añadirlo, que compruebe si ya existe en el carrito.

Como podéis observar, esto se anima y podríamos hacer infinidad de cosas pero por hoy ya hemos tenido bastante.

El video

Si os interesa todo esto o tenéis dudas, dejadme un comentario y lo comentamos.

Saludos y mucho ánimo!

5 comentarios en «Comprobar si un producto está en el carrito de WooCommerce»

  1. Primero agradecerte la claridad con la que escribes este tema que me ha resuelto la necesidad del proyecto.
    Segundo, felicitarte por el tremendo pedazo de copy bajo tu foto.
    Y nada más, ¡muchas gracias por tu post!

  2. Saludos, te comento… actualmente ando montando un e-commerce con worpress+woocommerce y adicionalmente le agregue el complemento para adicionar campos en un producto, la tienda trata de llenar una caja de chocolate en sus tres presentaciones (4, 9 y 16 cada una es un producto distinto) y elegir los sabores entre las opciones que fueron incluidas mediante el plugin, hasta alli todo bien porque funciona bien lograndose visualizar los sabores, pero la pregunta real es… existe algun codigo, complemento o plugin que me permita bloquear las otras opciones cuando el usuario haya elegido la cantidad de sabores para la respectiva caja, es decir, si escogio la caja de 4 sabores y ya escogio sus 4 sabores no pueda seleccionar otro sabor a menos que quite uno de los ya seleccionado. Espero haber sido claro. Saludos

  3. Hola Oscar,

    Muchas gracias por tu post. Llevo horas buscando por la web y no doy con lo que necesito, y creo que esto es lo que más se acerca. ¿Crees que sería posible adaptar este snippet (el primero) para que detecte que en el carrito ya hay un producto con un valor de atributo igual al que él va a elegir para que no le permita añadirlo? Por ejemplo, si el cliente para el atributo color ya ha elegido un producto «Negro», no debería permitirle agregar otro producto «Negro», aunque sí uno «Blanco».

    Muchas gracias, un saludo.

  4. Genial, pero en el caso de que sean varios los productos que están en promoción, y si cualquiera de esos productos está en el carrito, se añade una sola vez el artículo regalo a precio cero o con un 100% de descuento, ¿cómo sería el código? porque he intentado implementar este código, creando una matriz de los productos que están dentro de la promoción y con un foreach, comprobar si alguno de los productos coincide, pero no sé exactamente cómo hacerlo, porque me bloquea la página.

    Y en el caso de poner el precio a cero o aplicar el 100% de descuento en el producto regalo, tampoco he sabido como implementarlo.

Los comentarios están cerrados.