A veces simplemente no es posible en una tienda online vender productos por unidades, por la propia naturaleza del producto. Nadie compra por unidades los huevos, los tornillos o los vasos, por poner algunos ejemplos. Además, la inmensa mayoría de las veces que eso ocurre no podemos aceptar pedidos de cantidades aleatorias (cuatro huevos o dos vasos), sino que hemos de vender los productos en cantidades fijas o lotes, por ejemplo media docena de huevos o cincuenta tornillos.
Bien, pues vamos a ver cómo podemos resolver esa necesidad con WooCommerce. Y podrás elegir, puesto que no hay una única solución al problema, sino tres diferentes. Al gusto de cada uno.
Tabla de contenidos
Vender productos por lotes
Bueno, vamos a usar un ejemplo real, para que sea lo más práctico posible. Imaginemos que en mi ecommerce vendo este bonito pack de seis copas:
Como es un producto premium, de alta calidad y, por supuesto, alto precio (estoy teorizando) y quiero resaltar el hecho de que vas a obtener seis unidades, pongo en mi tienda el precio por unidad. Así evito que los clientes «se espanten» por el alto precio del pack. Así que creo el producto de la siguiente manera:
Como decía, he puesto el precio por unidad para que el cliente no vea 72€ y ni siquiera entre al producto. Así al menos para cuando vea que se vende en lotes de seis ya habrá podido ver sus maravillosas cualidades (cristal de Murano, soplado artesanalmente por elfos del bosque) que hacen que tengan ese precio.
Perfecto por ese lado. Ahora nos encontramos con el reto técnico: ¿cómo hago que el cliente sólo pueda comprar el artículo de seis en seis unidades?
Productos en cantidades fijas mediante productos variables
Esta primera opción, la de crear productos variables, no es muy elegante. Más bien es un recurso de andar por casa. Se trata de crear el producto como si fuera variable, introduciendo como variaciones las cantidades fijas que nos interesen.
Por ejemplo, para nuestro exclusivo pack de copas podríamos crear tres variaciones: 6, 12 y 18 copas, usando la cantidad como atributo (y recordando marcar la casilla Usado para variaciones). El resultado sería algo así:
¿Te das cuenta de dónde está el error en el razonamiento? El problema no ha hecho más que agravarse. Ahora no sólo aparece el precio del pack, sino que además aparece 72€-216€, lo que no hace sino asustar más al cliente (le muestra un precio aún más alto, con el rechazo psicológico que ello provoca, aunque sea a nivel inconsciente: ¿¿¿216€ por unas copas???
Sí es cierto que esto puede paliarse utilizando este plugin, para que en lugar de 72€-216€ aparezca algo como Desde sólo 72€ o A partir de 72€, pero también es cierto que esto no nos acerca lo más mínimo a la solución: estamos como antes, hemos de mostrar el precio por pack completo.
Ojo, que es una solución muy válida en otras circunstancias: para vender los huevos por docenas, o los tornillos de cincuenta en cincuenta, por usar dos de los ejemplos que mencionaba al principio. Pero para nuestro caso práctico, no sirve.
El método elegante: la solución del programador
Si se tratase de la tienda de un cliente mío, le programaría algo a medida. Un código rápido, eficiente y desarrollado ad hoc para resolver este problema concreto. Siempre es lo mejor.
El core de ese snippet de código sería esta función, que te dejo aquí por si quieres probarla tú mismo:
// Producto simple
function ejr_woocommerce_lotes ($args, $product) {
$lote = 6;
if (is_singular ('product')) {
$args ['input_value'] = $lote;
}
$args ['max_value'] = 60;
$args ['min_value'] = $lote;
$args ['step'] = $lote;
return $args;
}
add_filter ('woocommerce_quantity_input_args', 'ejr_woocommerce_lotes', 10, 2);
// Variaciones
function ejr_woocommerce_lotes_variaciones ($args) {
$lote = 6;
$args['max_qty'] = 60;
$args['min_qty'] = $lote;
return $args;
}
add_filter ('woocommerce_available_variation', 'ejr_woocommerce_lotes_variaciones');
Así como está es plenamente funcional, puedes usarlo pegándolo en tu archivo functions.php o, mejor aún, de algunas de las formas que explico en este artículo. Sólo tienes que cambiar la cantidad establecida donde dice $lote = 6; por la que necesites para tus packs. El resultado:
El producto ya se carga con la cantidad mínima (6) en el selector de unidades, pero si intentas cambiarlo por cualquier otra cantidad que no sea múltiplo del lote, te avisa con el cartelito.
El problema ahora mismo para cualquiera es que el código que he puesto es sólo el núcleo del necesario; es la función principal, pero le falta toda la parafernalia que hay que programar a medida, como por ejemplo a qué productos se aplica, basándonos en categorías o etiquetas (según está se aplica a toda la tienda). También se podría meter un hook para que automáticamente se insertase el aviso de Este producto sólo se vende en packs…, sin tener que estar metiéndolo a mano cada vez.
En fin, si sabes PHP ahí te dejo la parte importante, lo demás sabrás desarrollarlo sin mucho problema. Si no sabes programar y necesitas un plugin a medida para tu tienda o para tu web, no dudes en usar el formulario de contacto.
¿Estás construyendo tu tienda online o eres implementador WordPress?
¿Necesitas plugins de calidad y con soporte para implementar funcionalidades concretas?
Consigue todos los plugins a la venta en la sección de plugins de esta web y todos los que siga añadiendo. Acceso a los 96 plugins (y subiendo) con soporte directo del desarrollador, actualizaciones y uso ilimitado: úsalos en tantas webs como lo necesites.
La solución fácil: WooCommerce Advanced Quantity
Y llegamos a una solución poco eficiente, pero fácil de implementar y al alcance de cualquiera: un plugin. En este caso se trata de WooCommerce Advanced Quantity.
Este plugin te permite elegir cantidades mínimas, máximas, e incrementos (los lotes) de venta de un producto, de forma general en toda la tienda o seleccionando por etiquetas o por categorías. Además inserta el aviso, que se puede personalizar. El resultado, bastante «apañado», es algo así:
Como explicar la configuración sería prolijo, mejor te dejo un vídeo para que puedas ver paso a paso cómo configurar el plugin y qué posibilidades ofrece.
Como siempre, cualquier duda o pregunta que tengas me la puedes hacer en los comentario o, si prefieres algo más privado, puedes usar el formulario de contacto.
Pedro García dice
Muchas gracias Enrique, todo muy bien explicado.
Enrique J. Ros dice
A ti, Pedro, por tu comentario. Me alegra que te haya sido útil 🙂
Randy dice
Describiste mi problema y me diste la solución 🙂
Randy dice
Gracias!!!
Enrique Ros dice
Gracias a ti por tu comentario, Randy. Me alegra que te haya sido útil 🙂
Vicente dice
En los productos simples funciona muy bien, pero me da error en los productos variables.
Maria Jose Mora dice
amigo tenia el mismo error con los variables y lo sulucione quitando la preselección de la variación. Me avisas si te funciona tambien.
José Luis a. dice
Hola Enrique, buenas tardes, mi sitio va a ser de artículos que van por ejemplo Barnices para uñas en paquetes de 10 o 12 o 20 dependiendo del fabricante, dentro de este «pack» de 10 podrían ir 5 barnices negros, 3 blancos y 2 rojos, eso si el cliente por ejemplo quiere solo una caja, hasta ahi está bien.
pero resulta que un cliente quiere 500 barnices Azules, 255 rojos y 5 negros, aqui viene el problema, un cliente puede meter directamente que quiere 500 barnices azules y agruparse en cajas de 10 para no meter caja por caja? , luego cuando seleccione 255, pues serán 25 cajas de 10 =250 barnices rojos pero la mitad de una caja (5 barnices rojos) deberá ser llenada con otros 5 barnices de la misma marca y es ahi donde el debería la tienda decirle que le faltan 5 para completar una caja, en este caso el cliente podría seleccionar los negros restantes, hay algún plug que haga esto?
Funcionaría con productos simples o variables? lo de menos es hacer a todos los variables simples (por color)
muy completos siempre tus videos, muchas gracias.
Enrique J. Ros dice
Hola José Luis
Pues, sinceramente, no conozco ninguno que te permita hacerlo así (entiendo que la cantidad debe completarse entre las diferentes variaciones). ¿Has buscado ya entre estos?
Un saludo.
Exequiel Argüelles dice
Hola Enrique gracias por tu articulo. Una pregunta. Yo necesito vender por docena y que figure 12, 24 etc… pero tiene que ser por artículo y no por categoría. ¿se puede con el plugin? porque en la misma categoría tengo articulos que se venden por unidad y otros por docena….
espero tu respuesta
GRACIAS
Phany dice
Hola!
A mi tienda en linea me funciono perfecto el código, sin embargo se oculto el input de cantidad, conocen alguna forma de mostrarlo/hacerlo visible de nuevo?
Gracias, saludos.
Enrique J. Ros dice
Hola Phany
Ese código no contiene ninguna función que oculte el campo de cantidad. Revisa si no marcaste la opción «Vendido individualmente» o si no has insertado algún otro código que realice esa función.
Un saludo
jordi dice
Hola Enrique, he empleado el plugin que recomiendas para vender packs de 6 en 6 (como producto simple) pero da un error en el valor Qty y pone como valor inicial NaN indicando «Utiliza un formato que coincida con el solicitado Qty». Y por ello no pasa al cart ¿A qué puede ser debido?
Gracias!!!!
Enrique J. Ros dice
Hola Jordi
NaN significa que el valor introducido no es un número. Revisa que no has puesto símbolos o espacios y que lo que has introducido es un valor exclusivamente numérico.
Un saludo
juan dice
Sirve de ayuda!! Necesito saber si hay alguna forma de meter la regla detro de un csv de productos para exportar, ya que tengo 500 productos con cajas variadas entre 6 unidades la caja otra de 12 unidades y otra de 24 unidades.
Noelia dice
Hola !
Una consulta,
En el link del plugin es uno de compra, y el tutorial parece que muestras otro plugin,
Tienes algun tutorial para el WooCommerce Advanced Quantity?
Gracias !
Fanny dice
Muchas gracias por el artículo.
He creado productos variables y no sé cómo quitar la opción de «cantidad» antes de añadir el producto al carrito. Quiero que solo se pueda eligir las opciones de variaciones propuestas sin que haya un contador de productos.
Enrique J. Ros dice
Hola Fanny
Para eso tienes que activar la opción «Vendido individualmente».
Un saludo
Enrique Muñoz dice
Muchas Gracias por tu aportación, muy útil! Agradecido
Manuel J. Cañada dice
Buenas tardes, uno de los productos que vendemos es tarima flotante, el precio se publica siempre por m2, pero a la hora de la venta se hace por paquetes, la cantidad de metros cuadrados varia según el modelo y fabricante. Existe algún plungin que fuerce la compra por paquetes. O incluso que pueda calcular las cajas en función de los m2 que se necesita. Un ejemplo, necesito 100 m2 , que son los que introduzco en cantidad y me calcule las cajas en función de su contenido.
Gracias de antemano y un saludo
Enrique J. Ros dice
Hola Manuel
Echa un vistazo a WooCommerce Measurement Price Calculator, es posible que te sirva para lo que necesitas.
Un saludo
Rodolfo Hugo Porras Miraval dice
Muy interesante, seguro me servirá para futuros carritos. Te comento el caso que se me presenta, pues debo responder un presupuesto a un cliente, y no tomaré el trabajo si no encuentro la solución. Te explico con un ejemplo: Vendo packs de COPAS X6 UNIDADES a $300. Pero, también las vendo sueltas a $55 c/u. Y necesito que el usuario pueda comprar la cantidad que quiera, por ejemplo 10 copas, pero el importe de la compra deberá ser calculado como: x1 PACK + 4 COPAS, es decir: $300 + $220 = $520. Existirá algún plugin que contemple esta situación?
Aldo dice
Hola Enrique.
Muy claro el artículo. Llegué a él porque necesito resolver la siguiente situación.
Voy a incluir un producto en mi tienda que deseo venderlo por paquetes.
El primer paquete está formado por dos unidades, el segundo por 20 unidades y el tercero por 50.
Tu código me serviría si el precio de cada paquete se calculara a partir del precio de las unidades, pero no es así porque cada paquete tiene un precio menor que la suma del precio de sus unidades y a medida que el paquete es más grande el precio de las unidades es menor.
Puedes decirme de algún plugin que me permita resolver esta situación.
Gracias por el valor que aportas.
Jesús dice
Gracias Enrique! Eres un crack! 😀
Meredith Meza dice
Hola, muchas gracias por tus recomendaciones …pero mi producto es variable por colores…y cuando selecciono el color que quiero la regla no se aplica..como podría solucionarlo…?
Muchas Gracias
Juan dice
Hola Enrique,
eres un Crack!! gracias por tu ayuda, llevo muchos años siguiendote y me han ayudado muchísimo tus tutoriales.
He instalado el plugin y tengo un problema que no se como solucionar.
Tengo algunos productos que necesito vender por packs, estos a su vez tienen variaciones de talla, el problema es que configuro el plugin en packs de 5 y hasta ahí todo bien, pero al seleccionar una talla suma +1 por lo que cantidad que sale es 6 y al no ser multiplo de 5 no me deja añadir al carrito, es decir por defecto siempre hay 1 en la cantidad a añadir al carrito y el plugin suma los 5 minimos por lo que salen 6.
Muchas gracias de antemano
Enrique J. Ros dice
Hola Juan
Consulta directamente con el soporte del plugin, son quienes mejor te pueden ayudar.
Un saludo
Juan dice
gracias 😉
Federico Badillo dice
Buen día.
¿Sabrás de alguna forma para que el cliente pueda elegir entre una caja o una pieza de cierto producto?
Si elige caja que la cantidad de piezas se cargue al carrito de compra.
Enrique J. Ros dice
Hola Federico
Echa un vistazo a esto, quizá te ayude.
Un saludo
Javier Paredes dice
Hola Enrique,
Hay algún plugin con la misma funcionalidad de configuración como nos enseñas en el video para recomendarnos?
He visto que el plugin de Quantities and Units for WooCommerce de Nicholas Verwymeren lleva 6 años sin actualizarse desde la publicación de este post hubo muchas actualizaciones de WP, por lo cual que opciones nos puedes recomendar para aplicar precio por unidad en pack por cantidades.
Atento a tus comentarios, un cordial saludo.
Joana dice
Hola Enrique! El código funciona genial pero cuando se agrega al carrito des del loop o en el mismo carrito da error, alguna sugerencia? El plugin no me sirve por que necesito cantidades fijas por rol de usuario. Gracias!
Moisés dice
Hola Enrique. Una pregunta. Yo necesito vender por decenas y que figure 10, 20 etc… pero tendría que ser por producto y no por categoría. ¿se puede ? Resulta que en la misma categoría tengo productos que se venden por unidades y otros por cantidades fijas.
Gracias anticipadas por tu respuesta