Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Agregar un único producto al carrito de WooCommerce

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.

 
¿Aún con dudas?, en el siguiente artículo se detallan los puntos anteriores:

Suscríbete a DecodeCMS:  

La entrada Agregar un único producto al carrito de WooCommerce es un artículo reciente del sitio DecodeCMS.

Enregistrer un commentaire

0 Commentaires