Enrique J. Ros

Vender productos en cantidades fijas en WooCommerce

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.

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.

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.

Salir de la versión móvil