Saltar al contenido
Experiencias en Red

Establecer un pedido mínimo de productos en Woocommerce

Pedido mínimo en Woocommerce

Una de las necesidades que tiene un gestor de un negocio online cuando instala Woocommerce, el plugin de WordPress para tiendas online, es el establecimiento de un pedido mínimo de productos de su tienda online.

La opción no viene por defecto en el programa y hay que añadirla. Como siempre, podemos hacerlo manualmente o con plugins. Aquí vamos a ver cómo se hace de manera manual, sin necesidad de introducir plugins que carguen nuestro WordPress.

Normalmente, querremos introducir un pedido mínimo de productos o en el total del carrito de la compra cuando tenemos una tienda pequeña y necesitamos que haya un pedido mínimo de productos para que nos salga rentable.

Una cantidad mínima de compra de distintos productos

Puede ocurrir que tengamos una tienda online en la que tenemos distintos productos y queremos que, para algunos de ellos, sea obligatorio comprar un número mínimo de productos.

Si tenemos una tienda pequeña no nos saldrá a cuenta enviar un sólo producto a un destino determinado, porque los gastos de envío son más caros que el beneficio que obtenemos del producto que vendemos. Así que vamos a introducir un mínimo de productos a comprar.

Lo primero que haremos es ir a nuestro panel de administración de WordPress y accederemos a Apariencia. Pincharemos en el Editor de Temas, que es la última opción que nos aparece dentro de Apariencia.

En la siguiente imagen lo tenéis:

Una vez estamos en el Editor de temas nos encontramos con un panel a la derecha donde aparecen todos los archivos de nuestra web. Vamos a seleccionar el archivo ‘functions’, que en la imagen que muestro aquí debajo es el segundo archivo.

Al clicar a la derecha sobre el archivo Functions.php se nos desplegará en la parte central el contenido de dicho archivo. Así que para introducir las modificaciones de pedido mínimo en el carrito nos iremos al final del contenido, a la última linea que aparece escrita, y nos situaremos debajo, pulsando Enter, para escribir nuevas instrucciones.

En este post ya hemos hablado de como modificar el Archivo functions.php.

El código para introducir un número mínimo de productos a comprar es el siguiente:

Cantidad mínima a comprar de algunos productos en Woocommerce
// Cantidad mínima de productos a comprar
add_action( 'woocommerce_check_cart_items', 'set_min_quantity_per_product' );
function set_min_quantity_per_product() {
// Only run in the Cart or Checkout pages
if( is_cart() || is_checkout() ) {
global $woocommerce;
$i = 0;

// Lista de productos según su ID y cantidad mínima
$product_min_qty = array(
array( 'id' => 1245, 'min' => 5 ),
array( 'id' => 306, 'min' => 5 )
);

// Array de productos que no cumplen la condición
$bad_products = array();

// Comprobar número de productos
foreach( $woocommerce->cart->cart_contents as $product_in_cart ) {

foreach( $product_min_qty as $product_to_test ) {

if( $product_to_test['id'] == $product_in_cart['product_id'] ) {

if( $product_in_cart['quantity'] < $product_to_test['min'] ) {

$bad_products[$i]['id'] = $product_in_cart['product_id'];
$bad_products[$i]['in_cart'] = $product_in_cart['quantity'];
$bad_products[$i]['min_req'] = $product_to_test['min'];
}
}
}
$i++;
}

// Mensaje de error cuando no se ha alcanzado el mínimo
if( is_array( $bad_products) && count( $bad_products ) >= 1 ) {

$message = 'Lo sentimos. Pero que su compra se complete debe introducir una cantidad mínima de este producto.<br/>';
foreach( $bad_products as $bad_product ) {

$message .= 'El producto "'. get_the_title( $bad_product['id'] ) .'" requiere una cantidad mínima de '. $bad_product['min_req'] .' unidades'.'. Usted sólo ha incluido '. $bad_product['in_cart'] .'.';
}
wc_add_notice( $message, 'error' );
}
}
}

Podremos introducir un número mínimo a comprar en todos aquellos productos que nos interese. Para ello, nos iremos a la siguiente linea del código anterior y añadiremos tantos productos como queramos. Cada producto es un array, que lleva su id correspondiente.

Identificación de productos: array
// Lista de productos según su ID y cantidad mínima
$product_min_qty = array(
array( 'id' => 1245, 'min' => 5 ),
array( 'id' => 306, 'min' => 5 )
);

Como podéis ver, cada ‘array’ es un producto identificado con su ‘Id’ y el mínimo número de compra. Así, una vez nos encontramos aquí, tan sólo tenemos que modificar el id de cada producto, introduciendo el número que corresponda con nuestro producto. En el ejemplo anterior los productos son 1245 y 306.

Podemos añadir los que queramos. Detrás del paréntesis último colocaremos una coma y añadiremos otro array. Ejemplo:

Añadir más productos
// Lista de productos según su ID y cantidad mínima
        $product_min_qty = array( 
            array( 'id' => 1245, 'min' => 5 ),
            array( 'id' => 306, 'min' => 5 ),
            array(  'id => 556, 'min' => 5 )
        );

También podemos modificar el número mínimo de compra, que en el ejemplo anterior son 5 unidades o kilógramos, según lo que vendamos en nuestra tienda.

El Id de cada producto de Woocommerce lo podéis ver en el panel de administración de vuestro Woocommerce. Si pasáis el ratón por encima del nombre que tiene cada producto, debajo de éste aparecerá el número Id que lo identifica.

Establecer que haya un mínimo de unidades o de peso en el carrito

Puede ser que en lugar de establecer un mínimo de productos de compra, de forma individualizada, para determinados artículos, lo que queremos es que en el carrito haya una cantidad mínima de compra total.

Estamos hablado de un mínimo de unidades de productos o de un mínimo de peso en el carrito. En este caso, introduciremos en el Archivo functions, siguiendo las instrucciones arriba indicadas, el siguiente código:

Peso o unidades mínimas a comprar en el carrito de Woocommerce
add_action( 'woocommerce_check_cart_items', 'cldws_set_weight_requirements' );
function cldws_set_weight_requirements() {
// Only run in the Cart or Checkout pages
if( is_cart() || is_checkout() ) {
global $woocommerce;
// Set the minimum weight before checking out
$minimum_weight = 30;
// Get the Cart's content total weight
$cart_contents_weight = WC()->cart->cart_contents_weight;
// Compare values and add an error is Cart's total weight
if( $cart_contents_weight < $minimum_weight ) {
// Display our error message
wc_add_notice( sprintf('<strong>A Minimum Weight of %s%s is required before checking out.</strong>'
. '<br />Current cart weight: %s%s',
$minimum_weight,
get_option( 'woocommerce_weight_unit' ),
$cart_contents_weight,
get_option( 'woocommerce_weight_unit' ),
get_permalink( wc_get_page_id( 'shop' ) )
),
'error' );
}
}
}

En el ejemplo anterior, hemos puesto un mínimo de compra de 30 kilos o unidades (dependiendo de lo que vendamos en nuestra web). Esa cantidad la podemos modificar en las siguientes lineas:

// Set the minimum weight before checking out
$minimum_weight = 30;

Cambiaremos 30 por cualquier otra cantidad que queramos.

Establecer un gasto o una compra mínima en el carrito en Euros

Si lo que queremos es que no se permita ninguna compra a partir de un mínimo de gasto, introduciremos el siguiente código

Gasto mínimo en el carrito
add_action ( 'woocommerce_check_cart_items' , 'cldws_set_min_total' ) ;
 
función cldws_set_min_total ( ) {
 
  // Solo se ejecuta en las páginas de Carrito o Caja
  if ( is_cart ( ) || is_checkout ( ) ) {
   
    € global woocommerce;
    // Establecer el total mínimo del carrito
    € minimal_cart_total = 100 ;
        // Se requiere un mínimo de 100 EUR antes de pagar.

    € total = WC ( ) -> carrito-> subtotal;
        // Comparar valores y agregar un error es el total del carrito
      if ( $ total <= € minimum_cart_total   ) {
 
         // Mostrar nuestro mensaje de error
      wc_add_notice ( sprintf ( '<strong> Se requiere un mínimo de% s% s antes de pagar. </strong>'
  
        . '<br /> Total actual del carrito:% s% s' ,
        $ minimal_cart_total,
        get_option ( 'woocommerce_currency' ) ,
 
        $ total,
        get_option ( 'woocommerce_currency' ) ) ,
  
      'error' ) ;
 
    }
  }
}

En este caso hemos introducido un mínimo de compra de 100 euros, cantidad que podemos modificar . Lo haremos en las siguientes lineas:

 € global woocommerce;     // Establecer el total mínimo del carrito     € minimal_cart_total = 100 ;         // Se requiere un mínimo de 100 EUR antes de pagar.

Si os ha ayudado este artículo, nos gustaría que lo compartiérais para que otras personas puedan usar esta información. También podéis valorarlo:

1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (8 votos, promedio: 5,00 de 5)
Cargando...

Entradas relacionadas

Deja una respuesta

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

Comentarios (8)

La función de añadir mínimo de compra no funciona correctamente, se puede deber a alguna actualización?

Responder

Prueba a añadir el código en un editor de textos sin formato (textedit o editor de notas) y luego copialo en functions

Responder

copia en un editor de texto sin formato el código. Copia ese códido desde el editor de texto (textedit o editor de notas) y súbelo a functions

Responder

Yo gestiono una tienda online y tengo un mínimo en el carrito por el total de kilos. Como veis, se exige 5 kilos como mínimo. Esto es el cógido que tengo puesto, y funciona perfectamente:

/* Pedidio minimo */
add_action( ‘woocommerce_check_cart_items’, ‘cldws_set_weight_requirements’ );
function cldws_set_weight_requirements() {
// Only run in the Cart or Checkout pages
if( is_cart() || is_checkout() ) {
global $woocommerce;
// Set the minimum weight before checking out
$minimum_weight = 5;
// Get the Cart’s content total weight
$cart_contents_weight = WC()->cart->cart_contents_weight;
// Compare values and add an error is Cart’s total weight
if( $cart_contents_weight < $minimum_weight ) { // Display our error message wc_add_notice( sprintf('Se requiere un mínimo de %s%s en el carrito para comprar.
. ‘
Su carrito lleva: %s%s’,
$minimum_weight,
get_option( ‘woocommerce_weight_unit’ ),
$cart_contents_weight,
get_option( ‘woocommerce_weight_unit’ ),
get_permalink( wc_get_page_id( ‘shop’ ) )
),
‘error’ );
}
}
}

Responder

Hola, al añadir el código para establecer un pedido mínimo en euros, me sale el siguiente error: syntax error, unexpected ‘global’ (T_GLOBAL)

No sé mucho de php, ¿me podrías echar una mano?

Gracias!!

Responder

Copia el código que necesitas en un editor de textos sin formato. Usa el editor de notas o un text edit por ejemplo o cualquier otro. Y de ahí copialo a functions. Yo tengo un woocommerce y me funciona perfectamente
Saludos

Responder

El código correcto es este:

add_action( ‘woocommerce_check_cart_items’, ‘cldws_set_min_total’);
function cldws_set_min_total() {
// Only run in the Cart or Checkout pages
if( is_cart() || is_checkout() ) {
global $woocommerce;
// Set minimum cart total
$minimum_cart_total = 10;
// Se requiere un mínimo de 10 EUR antes de finalizar la compra.
$total = WC()->cart->subtotal;
// Compare values and add an error is Cart’s total
if( $total <= $minimum_cart_total ) {
// Display our error message
wc_add_notice( sprintf( 'Se requiere un mínimo de %s %s antes de finalizar la compra.
.’El total de la compra es: %s %s’,
$minimum_cart_total,
get_option( ‘woocommerce_currency’),
$total,
get_option( ‘woocommerce_currency’) ),
‘error’ );
}
}
}

Responder

¿Como hago para que esto solo afecte a un rol de usuario en especifico?
que no sea para toda mi tienda, que por ejemplo aplique solo para distribuidores.

Responder