• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Plugins / Agregar un único producto al carrito de WooCommerce

Agregar un único producto al carrito de WooCommerce

[ 14 junio 2023 ] [ Actualizado: 28 junio 2023 ]
[ Autor: Jhon Marreros Guzmán ][ Plugins - Intermedio] [ ]

funcionalidad woocommerce

Suscríbete a DecodeCMS:  

En un artículo anterior vimos cómo agregar una única unidad de diferentes productos al carrito de WooCommerce, sin embargo en este artículo vamos a limitar las ventas a un único producto, incluso a una única unidad al añadir al carrito

 

Resultado Final

Al final obtendremos algo similar a la siguiente imagen:

Añadir un único producto a WooCommerce

 

Limitar la venta a un solo producto

El siguiente código permite añadir sólo un producto al carrito de WooCommerce, si estas en la pantalla de producto te muestra un mensaje de que el producto anterior ha sido reemplazado en el carrito.

add_filter( 'woocommerce_add_to_cart_validation', 'dcms_add_one_product_in_cart', 20, 3 );
function dcms_add_one_product_in_cart( $valid, $product_id, $quantity  ) {
    if ( WC()->cart->get_cart_contents_count() <> 0){
        wc_empty_cart();
        wc_add_notice( 'El producto ha sido reemplazado en el carrito', 'notice' );
    }

    return $valid;
}

En el código anterior:

  • Usamos el Hook de filtro woocommerce_add_to_cart_validation, que hace referencia a la función dcms_add_one_product_in_cart.
  • Dentro de la función comprobamos si hay productos agregados al carrito.
  • Si los hay entonces limpiamos el carrito y luego imprimimos un mensaje.
  • Finalmente retornamos el valor de la variable $valid, ya que estamos en un Hook de filtro.

 

Limitar la venta a un solo producto y una única unidad

En algunos casos es posible que necesites que solo se agregue una única cantidad del producto seleccionado, lo puedes hacer con el siguiente código:

// Validación al agregar un producto al carrito
add_filter( 'woocommerce_add_to_cart_validation', 'dcms_add_one_product_in_cart', 20, 3 );
function dcms_add_one_product_in_cart( $valid, $product_id, $quantity  ) {
    if ( WC()->cart->get_cart_contents_count() <> 0){
        wc_add_notice( 'El producto ha sido reemplazado en el carrito', 'notice' );
        wc_empty_cart();
    }
    return quantity_only_one($valid, $quantity);
}


// Validación al actualizar el carrito
add_filter( 'woocommerce_update_cart_validation', 'dcms_update_cart_validation', 20, 4 );
function dcms_update_cart_validation( $valid, $cart_item_key, $values, $quantity ) {
	return quantity_only_one($valid, $quantity);
}

// Función auxiliar
function quantity_only_one($valid, $quantity){
    if ( $valid && $quantity > 1){
        wc_add_notice( 'Sólo puedes agregar un item por producto', 'error' );
        return false;
    }
    return $valid;
}

En el código anterior:

  • El codigo tiene dos partes y una función auxiliar, la primera parte es similar al código que vimos anteriormente
  • Usamos el Hook de filtro woocommerce_add_to_cart_validation, que hace referencia a la función dcms_add_one_product_in_cart.
  • Dentro de la función comprobamos si hay productos agregados al carrito.
  • Si los hay entonces limpiamos el carrito y luego imprimimos un mensaje.
  • El retorno en este caso pasa por otra función auxiliar que valida que solo haya una unidad quantity_only_one().
  • La segunda parte del código es validar cuando la cantidad se cambia, esto lo hacemos con el Hook de filtro woocommerce_update_cart_validation que hace referencia a la función dcms_update_cart_validation.
  • Dentro de esta función simplemente llamamos a la función auxiliar que valida que haya solo una unidad del producto.

 

Conclusión

Como has podido comprobar puedes añadir la funcionalidad de permite agregar sólo un único producto al carrito de WooCommerce, hemos visto como realizarlo de manera simple a través de código.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • URL para agregar varios productos al carrito de WooCommerceURL para agregar varios productos al carrito de WooCommerce
  • Acortar el título del producto en la página de tienda de WooCommerceAcortar el título del producto en la página de tienda de WooCommerce
  • Agrega una única unidad por producto al carrito de WooCommerceAgrega una única unidad por producto al carrito de WooCommerce
  • Sincronizar WooCommerce y Google SheetsSincronizar WooCommerce y Google Sheets
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (2 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. Jesus

    17 abril, 2024

    Hola. Probé tu código y para productos diferentes funciona, pero si añades variantes del mismo producto no funciona. Es decir, si tengo manzanas en la cesta y añado patatas me elimina las manzanas. Sin embargo si tengo manzanas rojas y añado manzanas verdes ( 2 variantes del mismo producto) muestra los mensajes pero no cambia el producto con la variante correcta en el carrito.
    ¿Es posible que lo modifiques para contemplar esta posibilidad?
    Mil gracias

    • Jhon Marreros Guzmán

      19 abril, 2024

      Hola Jesus, tomaré nota para revisar esto, posiblemente con variaciones sea un tratamiento diferente. Saludos.

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Omnisend
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad SEO social woocommerce

Populares

Mostrar categorías y etiquetas en lista de productos WooCommerce

Habilitar sonido en video theme Twenty Seventeen

Posts relacionados sin plugins en WordPress

Subtítulo desde título de la entrada en WordPress

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2026 Todos los derechos reservados