Saber si en el carrito hay un producto o categoría concretos en WooCommerce

En algunas ocasiones nos puede ser necesario detectar si en el carrito de la compra, con WooCommerce, el usuario tiene un producto en concreto o productos de una categoría específica. En este artículo vemos dos códigos para saber ambas cosas.


por

Si estamos personalizando nuestra tienda online de WooCommerce con snippets de código y ajustes algo específicos o concretos de nuestro e-commerce, es posible que para alguna función o condicional necesitemos saber si el usuario tiene en el carrito de la compra un producto en concreto o algún producto de una categoría específica.

Para ello, existen dos snippets de código que nos van a ayudar:

 

Verificar si hay algún producto de una categoría en concreto:

 

 Verificar si hay un producto específico:

 

Por ejemplo, hace unos días utilizábamos esta función para poder modificar los términos y condiciones del checkout, también nos podría ser útil para descartar una forma de envío o de pago o para mostrar mensajes personalizados en la página de pedido.

 

¿Eres implementador o desarrollador WordPress?

En la Zona DPW encontrarás más recursos, tutoriales, plantillas, y una biblioteca de snippets para poder utilizar en tu día a día y ganar tiempo en tu trabajo:

ACCEDER AHORA

Comentarios

11 respuestas a «Saber si en el carrito hay un producto o categoría concretos en WooCommerce»

  1. Avatar de Martín

    |

    en que archivo puedo insertar estos códigos??

    1. Avatar de esther

      |

      Hola Martín!
      Puedes añadirlo en el archivo functions.php de tu theme o en un plugin. Aquí tienes más información sobre ello: https://www.esthersola.com/modificar-functions-code-snippets/

      Saludos!

  2. Avatar de Alena

    |

    Utilicé el primer código para ver si había un producto de cierta categoría en mi carrito, y se daña la web con el mensaje: Ha habido un error critico en tu web… ¿Alguna idea?

    Gracias 🙂

    1. Avatar de esther

      |

      Hola Alena,
      Pues he comprobado el código y a mi me funciona muy bien, revisa si has realizado algún cambio que no haya algún error de sintaxis.

      Saludos!

  3. Avatar de Mileydi Solis

    |

    como podría añadir una función para separar los productos de los servicios. Es decir, los productos que están en las categorías de productos, son objetos físicos que cuentan con envío, pero también hay una categoría para servicios, en el carrito, deseo separar estas dos cosas, que si se añade un servicio, no se pueda añadir un producto, y que se facture individualmente, me ayudas porfa

    1. Avatar de esther

      |

      Hola!
      Seguramente debería utilizarse un script con woocommerce_add_to_cart_validation que validara los productos que se añaden al carrito para limitar cuando sea servicio que no permita producto y al revés.
      Cuando pueda preparo algún ejemplo.

      Saludos!

  4. Avatar de Fernando Diaz

    |

    Esther, muchas gracias por compartir tus conocimientos. Antes de ingresar a la página de finalizar compra, es decir al hacer clic en «Finalizar compra» del carrito, debo validar si hay existencias de los productos a comprar validándolos en una aplicación CRM externa a Woocommerce. Me puedes por favor indicar cual sería el hook a utilizar y si el resultado es que la existencia es menor a lo que se compra no me deje pasar al enlace de «Finalizar compra». Muchas gracias.

    1. Avatar de esther

      |

      Hola Fernando!

      Pues en el caso que indicas yo diría que el hook es el mismo que comento en este post, woocommerce_before_cart, te servirá para ver que hay en el carrito, validarlos y permitir continuar o no.
      En esta página tienes todos los hooks que hay disponibles en esa página por si te va mejor otro: https://www.businessbloomer.com/woocommerce-visual-hook-guide-cart-page/

      Saludos!
      esther

      1. Avatar de Fernando Diaz

        |

        Muchas gracias!

      2. Avatar de Fernando Diaz

        |

        Hola Esther, muchísimas gracias por tu ayuda.
        Después de probar el que me indicas, utilicé el hook woocommerce_before_checkout_form y allí escribí el código para que me validara las existencia de los productos. Me funciona de maravilla, le coloqué al final de las comparaciones el siguiente código y me regresa a la página del carrito para corregir cantidades.
        IF ($ErrorenCantidad»») {
        wp_redirect(wc_get_page_permalink(‘cart’));
        exit;
        }
        Pero he intentado que además que se devuelva a la página del carrito, muestre los productos cuya existencia es menor a la solicitada, ya que no se le muestra ningún mensaje al cliente. Por favor de tu ayuda para mostrar el mensaje en la página del carrito y que sólo sea después de haber validado el hook woocommerce_before_checkout_form
        Muchas gracias.

        1. Avatar de esther

          |

          Hola Fernando,
          ¿Y sí realizas la misma validación también en el carrito? Así podrías mostrar un aviso con wc_print_notice sobre el problema de las existencias y en el caso de la valoración en el checkout que te enviara al carrito también aparecería. ¿Te puede servir como solución?
          Saludos!