Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Agrega una única unidad por producto al carrito de WooCommerce

Es posible que en algunos proyectos quieras limitar la compra de productos a un único ítem, es decir, puedes agregar varios productos pero solo uno de cada uno.

 

Resultado Final

Al final queremos obtener algo similar a como se muestra en la imagen:

Agregar un item por producto resultado final

 

Código para agregar un ítem por producto

Puedes agregar el siguiente código en el archivo functions.php de tu tema hijo o usando algún plugin de Snippets.


// Validación al agregar al carrito
add_filter( 'woocommerce_add_to_cart_validation', 'dcms_add_to_cart_validation', 10, 3 );
function dcms_add_to_cart_validation( $valid, $product_id, $quantity ) {
        if ( $valid && $quantity > 1){
                wc_add_notice( 'Sólo puedes agregar un item por producto', 'error' );
                return false;
        }

        if ( $valid && ! empty( WC()->cart->get_cart() )  ) {
                foreach ( WC()->cart->get_cart() as $values ) {
                        if ( $product_id == $values['product_id'] ) {
                                wc_add_notice( 'El producto ya existe en el carrito', 'error' );
                                return false;
                        }
                }
        }

        return $valid;
}

// Validación al actualizar el carrito
add_filter( 'woocommerce_update_cart_validation', 'dcms_update_cart_validation', 10, 4 );
function dcms_update_cart_validation( $valid, $cart_item_key, $values, $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:

  • Usamos Hooks de validación, es decir podemos cancelar el proceso retornando falso
  • El primer Hook de filtro es woocommerce_add_to_cart_validation, hace referencia a la función dcms_add_to_cart_validation y se ejecuta tras añadir un producto al carrito
  • Dentro de esta función tenemos dos partes, la primera valida que sólo se agregue una cantidad de una unidad
  • La segunda parte controla si el producto ya esta añadido al carrito, en ambos casos si falla emite un mensaje y retornamos falso
  • El otro Hook es woocommerce_update_cart_validation, hace referencia a la función dcms_update_cart_validation, este se ejecuta cuando se actualizan las cantidades del carrito
  • Dentro de esta función simplemente validamos que la cantidad no sea mayor que uno

 

Conclusión

Si quieres controlar que sólo se agregue una unidad por cada producto en el carrito de WooCommerce, puedes realizarlo fácilmente directamente a través de código. También puedes editar el código para que en lugar de una unidad te acepte una cantidad máxima.

 
¿Aún con dudas?, en el siguiente video se detalla el uso del código anterior.

Suscríbete a DecodeCMS:  

 

La entrada Agrega una única unidad por producto al carrito de WooCommerce es un artículo reciente del sitio DecodeCMS.

Enregistrer un commentaire

0 Commentaires