Cómo configurar un pedido mínimo en WooCommerce

Definir un umbral de pedido mínimo es algo frecuente en muchas tiendas online.

Un ejemplo práctico que se me viene a la mente podría ser el de una tienda con productos de muy bajo coste y cuyo precio por unidad puede llegar a ser 5 veces menor que los gastos de envío.

No tiene mucho sentido pagar más gastos de envío que de producto.

Otro ejemplo podría ser el de una tienda que sólo venda a mayoristas y que sólo se permita finalizar la compra si el carrito alcanza el número mínimo de productos.

En este artículo voy a mostrarte un truco con el que podrás configurar un pedido mínimo en WooCommerce para los productos que a ti te interese.

Truco para definir un pedido mínimo de productos en Woocommerce.

Antes de continuar quiero que tengas claro que este truco no tiene nada que ver con la configuración del pedido mínimo para aplicar gastos de envío gratuitos. De eso ya hablé en otra ocasión y en ese caso sólo afectaba a la forma en la que se aplicaban los gastos de envío.

El truco que voy a explicar hoy afecta a todo el proceso de compra y te va a permitir hacer lo siguiente:

  1. Bloquear la página de pago hasta que alcances el pedido mínimo. Cuando accedas a la página del carrito verás un mensaje de aviso que te indica que aún no has alcanzado el pedido mínimo para finalizar la compra. De hecho, si intentas continuar para efectuar el pago, no te dejará.
  2. Se aplica a los productos que tu desees y NO a todo el carrito. Es decir, si por ejemplo tienes en tu carrito 3 productos diferentes y en uno de ellos has configurado un pedido mínimo de 5 unidades, NO se te permitirá finalizar la compra hasta que no añadas 4 productos más de ese producto en concreto.

Por supuesto, alcanzar el pedido mínimo en este caso, no exime de pagar gastos de envío.

Los gastos de envío se configuran igual que siempre, de manera independiente.

En un principio intenté configurar el número mínimo de productos por pedido usando el plugin «Min and Max Purchase for WooCommerce» y parecía que funcionaba.

El problema vino cuando quise configurar el pedido mínimo sólo para algunos productos.

Resulta que la versión gratuita del plugin aplica la condición del pedido mínimo para todos los productos sin hacer distinción. Con lo cual si en los pedidos sólo quieres exigir un número mínimo de unidades para determinados productos, tendrás que comprar la versión Pro del plugin.

Obviamente la versión Pro del plugin te permite definir muchas más configuraciones. Pero si lo que buscas es aplicar la condición de pedido mínimo para unos pocos productos, seguramente te sea mucho más práctico el siguiente código:

En este caso, antes de pegar el código al final del fichero functions.php de tu plantilla woocommerce, debes de definir para qué productos quieres que se aplique la condición y qué cantidad mínima quieres exigir para cada uno. Para ello, lo único que tienes que hacer es ir a la siguiente línea de código:

 // Lista de ID de productos y su cantidad mínima correspondiente
 $product_min_qty = array( 
     array( 'id' => 12, 'min' => 10 ),
     array( 'id' => 7, 'min' => 5 )
 );

y sustituir el número de ID por el ID de tu producto y en cada valor de ‘min‘ sustituir por la cantidad mínima de ese producto que tú exijas en cada pedido.

Las líneas de código anteriores están configuradas para que el pedido mínimo se aplique sólo a 2 productos (cada array es un producto).

Por ejemplo, en la primera indico que los pedidos que incluyan el producto con el ID número 12 deberán alcanzar al menos 10 unidades de ese producto para poder finalizar la compra en WooCommerce.

Aquí te muestro una captura de ejemplo con el mensaje de error.

Número mínimo de productos pedido WooCommerce

Si te ha resultado útil este código snippet, entonces te encantará WooCommerce Hacks.

Una recopilación de más de 50 códigos con funciones avanzadas de WooCommerce que te harán la vida más fácil y te ahorrarán cientos de euros en plugins.

Quiero saber más

Para añadir nuevos productos, simplemente tienes que incluir un nuevo array con los datos del producto, justo después del primer array.

Quedaría algo así:

// Lista de ID de productos y su cantidad mínima correspondiente
 $product_min_qty = array( 
     array( 'id' => 12, 'min' => 10 ),
     array( 'id' => ID_nuevo_producto, 'min' => cantidad_minima_por_pedido ),
     array( 'id' => 7, 'min' => 5 )
 );

Espero que este truco te sea útil para configurar tu número mínimo de productos por pedido en WooCommerce, con la libertad de poder aplicarlo sólo a los productos que tu quieras.

De todas formas, si en tu caso necesitas de una configuración más compleja de productos por pedido, entonces si que te recomiendo comprar algún plugin potente que te permita gestionarlo de forma más fácil.

62 comentarios en “Cómo configurar un pedido mínimo en WooCommerce”

  1. Estimado, como haría para que se aplique a todos los productos usando tu código y no estar ingresando los ID uno por uno, tu código funciona perfecto ya que el plugins aplica pero cuenta en grupo de productos y no por producto individual.

  2. Hola, he leído varias veces y no encuentro donde dice en que parte debo insertar el código, que pena si esta pero la verdad no lo he visto. Gracias

    1. Hola Cristian!

      Debes insertarlo al final del archivo functions.php de tu tema. Pero antes hay que tener en cuenta un par de aspectos para hacerlo de forma segura. Te lo explico aquí

      Saludos!

  3. Buenas,
    El código funciona perfectamente, per tengo una duda, sería posible aplicar el mismo funcionamiento pero a una categoría concreta de productos¿?

    Gracias.

  4. Hola, he instalado tu código pero es para determinar una «cantidad mínima» de cierto productos.
    Funciona bien, Pero yo quiero que sea un importe mínimo del poducto. O sea, que si vale 5€, no se pueda pedir asta que se pida 50€

  5. Hola Antonio, instalé el plugin y va bien, pero deja rellenar los datos del envío aunque no se haya completado la cantidad mínima de unidades, quiero que no deje completar los datos hasta no alcanzar las 4 unidades, el mensaje me lo muestra bien, sabes como hago para que no deje completar datos del pedido???

  6. Buenas tardes, estimado me parece muy útil su información, en mi caso ando buscando que la función sea por un monto mínimo de pago y no por numero de productos, que debo hacer ??

  7. Gracias! Fue super util! Te hago una consulta: si quiero que todos los productos tenga un minimo 2 productos, en lugar de agregar un array por cada producto hay alguna forma para que se aplique a todos?

  8. Hola. Estoy buscando algún plugin gratuito o algún código para que los gastos de envío sean gratuitos para un determinado role de usuario.
    Saludos y gracias

  9. Hola Antonio,

    A ver si me puedes ayudar con mi sitio (orchessi.com). Como verás he puesto una compra mínima de 50 euros utilizando tu código. El problema es que cuando cambio la moneda a Soles Peruanos el límite sigue siendo 50, pero Soles… ¿Sabes cómo se podría hacer para que hiciera el cambio de 50 euros a 200 soles (aprox.) cuando se elige el tipo de moneda? Gracias!

    1. Hola Carlos,

      Para configuraciones más avanzadas y con diferentes monedas, te recomiendo que uses el plugin Min and Max Purchase for WooCommerce.

      El código que muestro no está pensado para trabajar con diferentes divisas :-/

      Un saludo!

  10. Muchas Gracias Antonio, ha funcionado perfectamente.
    Hay en algun sitio donde este por categorias?! Ya que he visto que varios te lo han preguntado (se que pedimos mucho).

    Muchas gracias y un saludo!!

    1. Hola Ivan,

      Para configuraciones más avanzadas, te recomiendo que pruebes en el plugin Min and Max Purchase for WooCommerce.

      Saludos!

  11. Hola aplique el codigo y anda de maravilla solo que en las variaciones no aplica la condicion por la sumatoria de los productos en las distintas variantes si no que lo hace por la variacion en si ….mi pregunta como puedo hacer para que lo haga a nivel producto y no por variacion ?

  12. Excelente manual!!!
    Llegue aqui buscando otra cosa, que es como hacer para limitar la venta a una valor minimo en el carrito total.
    Mi venta seria mayorista, o sea el cliente dno deberia poder comprar menos de X valor en el total de la compra.
    Es complejo de hacer?
    Muchas Gracias

    1. Hola Ramiro,

      Para eso existen varios plugins, puedes probar con este gratuito «Minimum Purchase for WooCommerce«. Yo no lo he probado, así que no te puedo decir qué tal va.

      Si ves que se queda limitado para lo que buscas, entonces ya te recomiendo que pruebes opciones de pago como «Woocommerce Purchase Limits«.

      Espero que te sirva.

      Saludos!

  13. Buenos días Antonio,

    Gracias por este código tal últil!
    Lo he utilizado y funciona perfectamente en mi woocommerce. El problema es que al actualizar woocommerce a la última versión ha dejado de funcionar la funcionalidad del código…
    ¿Me podrías ayudar con esto?
    Gracias de antemano,
    Un saludo

    1. Hola Belén,

      Lo acabo de probar con la última versión de WooCommerce (2.5.2) y funciona sin problema.

      Asegúrate de haber introducido correctamente los IDs de los productos.

      Un saludo!

  14. Que putada, al estar pensado para varios productos no me funciona, además como no tengo ni P… idea de PHP me resulta imposible modificar el campo de definición de los array.

    Si alguien pudiera explicarmen como modificar ese campo, podría por fin usarlo para un solo producto de toda la tienda que tiene la caracteristica de necesitar un pedido mínimo.

    Gracias de antemano.

  15. Hola, es muy interesante e instructivo tu tutorial.
    Pero, como se hace para establecer un mínimo de pedido en base al precio total del carro??
    Es decir igual que comentabas al inicio del post, en mi caso únicamente tengo tres productos y me es indiferente la cantidad que compres de cada producto, pero tengo que establecer un gasto mínimo 15 € para que me cubra los gastos básicos. Así que la compra tiene que ser superior a 15 € para poder efectuarse. A parte, claro, los gastos de envío.

    Me puedes ayudar con esto??

  16. Muchas gracias, me ayudó mucho!

    Para aquellos que trabajan con varios productos y quieren controlar las aplicaciones mínimas en cada variación, he cambiado el código de la siguiente manera:

    // Lista de ID de productos, su variación y su cantidad mínima correspondiente
    $product_min_qty = array(
    array( ‘id’ => 84, ‘var’ => 87, ‘min’ => 2 ),
    array( ‘id’ => 84, ‘var’ => 88, ‘min’ => 4 ),
    array( ‘id’ => 92, ‘var’ => 95, ‘min’ => 3 ),
    array( ‘id’ => 92, ‘var’ => 96, ‘min’ => 5 )
    );

    y ajustando por el siguiente código:

    if( $product_to_test[‘id’] == $product_in_cart[‘product_id’] and $product_to_test[‘var’] == $product_in_cart[‘variation_id’] )

    Abrazos de Brasil

    1. Lo del plugin es bastante fácil, crear un PHP en plugins y pegar el código tuyo.

      Sólo le agregué este encabezado:

      /**
      * Plugin Name: Woo Cart Min
      * Plugin URI:
      * Description: Establecer cantidad mínima de compra a ciertos productos. Basado en el plugin My Hello Dolly
      * Version: 1.0.0
      * Author: Josepzin
      * Author URI: http://www.josepzin.com / https://woodemia.com/como-configurar-un-pedido-minimo-en-woocommerce/
      * Text Domain: woo_cart_min
      * License: GPLv2 or later
      */

  17. Buenas. Me están ayudando a hacer la nueva tienda en wordpress y a ver si se os ocurre cómo darle forma:
    Tengo unos productos en catálogo que no tienen mínimo, y otros sí; hasta ahí como el ejemplo del artículo. Se da la situación de que los artículos que sí tienen mínimo son unos productos (sandwiches variados) que hay que pedir en cajas (combinadas) de 40, pero pudiendo variar los tipos dentro de esa categoría de sandwiches. No pueden ser 41; o son 40 o son 80 o 120…y pueden ser variados entre sí dentro de la caja.

    Se os curre cómo?

    Gracias
    saludos

  18. muchas gracias por tan completo instructivo de wordpress, me ha sido de gran ayuda.

    tengo una duda, hay forma de limitar la cantidad de pedidos a procesar en un lapso de tiempo?

    por ley local no se me permite hacer mas de (x) numero de ordenes al mes, agradezco la atención prestada.

  19. Me he partido la cabeza con un problema que con algo de código se resolvería a mi parecer, quiero hacer algo similar a esto, sólo que:

    – El envío tipo A puede usarse si el usuario tiene 1 o más artículos en el carrito.
    – El envío tipo B solo se puede usar si el usuario tiene en el carrito 3 o más artículos.

    ¿Cómo hago esto? Gracias desde ya.

    1. Hola Rodolfo,

      Se podría hacer perfectamente con un código snippet, pero es algo complejo como para explicarlo en un comentario.

      Lo que no sé es si existe algún plugin que te permita ese tipo de configuración de envío :-/

      Saludos!

  20. Vale, muchas gracias, me ha servido.. Pero quiero hacer una variante, tienes una idea de cómo hacer que, por ejemplo:
    El envío A se active para cualquier numero de compra de productos indistintos.
    El envío B se active para compras mayores a 3 productos indistintos.

    Muchas gracias desde ya, saludos.

          1. Hola, de nuevo.
            Me podrias ayudar con esto por favor. Es que tengo la tienda separada en dos, ventas para particulares y ventas a profesionales. Y ayer metí muchos ids de productos y se bloqueó la pagina entera. Yo no se si es de esto o no, pero supongo que si.
            Muchas gracias

          2. Hola Alba,

            Seguramente se deba a que has configurado mal el código. Revisa todos los pasos que explico porque si lo configuras como digo, el código funciona sin problemas.

            Un saludo!

  21. Muy útil este aporte y es preciso para un desarrollo que estoy actualizando en este momento, sin embargo tengo una duda y es, si es posible que me indicaras como hacer esto mismo pero en este caso lo que quiero es que si compra alguno de mis dos productos pueda gestionar su pedido. Me explico si Compra el Producto A ó el Producto B, el cliente puede hacer efectivo su Pedido.

    Agradezco tu colaboración ya que mis habilidades en PHP no son tan profundas. Gracias.

      1. Hola Antonio, espero te encuentres bien, muchas gracias por hacer publico tu trabajo, es de gran ayuda para emprendedores como nosotros.
        Como seria el código, para que en el pedido exista al menos 1 de estos 3 productos.
        es decir:
        Tengo producto A, B y C. necesitaría que el código valide que el pedido contenga al menos uno, de estos 3 productos.
        Gracias! exito!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Responsable: Antonio Cantero, siendo la Finalidad; envío de mis publicaciones así como correos comerciales. La Legitimación; es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en mi plataforma de email marketing Active Campaign ubicada en EEUU y acogida al Privacy Shield. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos en contacto@woodemia.com

Scroll al inicio