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»
|
en que archivo puedo insertar estos códigos??
|
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!
|
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 🙂
|
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!
|
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
|
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!
|
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.
|
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
|
Muchas gracias!
|
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.
|
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!