Cómo configurar un importe de pedido mínimo de compra en WooCommerce

Como configurar pedido mínimo en WooCommerce - MARIO GÓMEZ LUELMO
¿Quieres configurar un pedido mínimo en tu tienda online WooCommerce? Si necesitas establecer un pedido mínimo para que la venta salga rentable, es aquí donde toca configurar una funcionalidad para establecer una compra mínima en WooCommerce para que el cliente pueda comprar. Si no llega al importe mínimo, tendrá que añadir más productos al carrito. ¡Úsalo!

Índice de contenidos

¿Tienes una tienda online que ofrece productos con poco margen? ¿Quieres configurar un pedido mínimo en tu tienda online WooCommerce? En muchas ocasiones necesitamos establecer un pedido mínimo para que la venta salga rentable, ya sea por cubrir costes de gastos de envío o de la pasarela de pago. Es aquí donde toca configurar una funcionalidad para establecer una compra mínima en WooCommerce para que el cliente pueda comprar. Si no llega al importe mínimo, tendrá que añadir más productos al carrito.

Como siempre, en estos artículos de blog utilizo snippets para no usar plugins de terceros que sobrecarguen el proyecto web. Basta con añadir unas líneas de código a nuestro archivo functions.php o plugin de personalizaciones y listo. Pero si eres un amante de los plugins y prefieres ir más rápido, también te voy a recomendar dos buenas opciones. ¡Vamos a ello!

Código (snippet) para establecer un pedido mínimo de compra en WooCommerce

// Establecer un importe minimo en la compra
function woocommerce_importe_minimo() {
  $minimum = 20;  // Debes cambiar el 20 por el importe mínimo que quieras establecer en tu pedido
  if ( WC()->cart->total < $minimum ) {
    if( is_cart() ) {
      wc_print_notice(
      sprintf( ' Debes realizar un pedido mínimo de %s para finalizar su compra.' , // Pon aquí el texto que quieras que se muestre en el carrito de compra.
        wc_price( $minimum ),
        wc_price( WC()->cart->total )
      ), 'error'
      );
    } else {
      wc_add_notice(
      sprintf( 'No puedes finalizar tu compra. Debes realizar un pedido mínimo de %s para finalizar su compra.' , // Pon aquí el texto que quieras que se muestre en la página de finalizar compra.
        wc_price( $minimum ), 
        wc_price( WC()->cart->total )
      ), 'error'
      );
    }
  }
}
add_action( 'woocommerce_checkout_process', 'woocommerce_importe_minimo' );
add_action( 'woocommerce_before_cart' , 'woocommerce_importe_minimo' );

Echa un vistazo al código. Da igual si no sabes programar. Te he dejado unos comentarios con las líneas de código que debes cambiar según tu criterio de negocio: el importe mínimo y el mensaje de alerta.

Con esto no solo te sale un aviso en la página de carrito y de finalizar compra avisando que el pedido mínimo en este caso es 20€…

sino que además no te deja finalizar la compra hasta que no añadas dicho importe:

Establecer un pedido mínimo en WooCommerce sin Impuestos

Para que este snippet funcione es imprescindible tener bien configurada la opción de impuestos en tu WooCommerce, dependiendo de la ciudad. Este ejemplo es para un pedido mínimo de 60€ IVA no incluido:

// Establecer un importe minimo en la compra sin Impuestos
function woocommerce_importe_minimo() {
  $minimum = 60;  // Debes cambiar el 60 por el importe mínimo que quieras establecer en tu pedido
  if ( (WC()->cart->subtotal - WC()->cart->tax_total) < $minimum ) {
    if( is_cart() ) {
      wc_print_notice(
      sprintf( ' Debes realizar un pedido mínimo WooCommerce de %s sin IVA para finalizar su compra.' , // Pon aquí el texto que quieras que se muestre en el carrito de compra.
        wc_price( $minimum ),
        wc_price( (WC()->cart->subtotal - WC()->cart->tax_total) )
      ), 'error'
      );
    } else {
      wc_add_notice(
      sprintf( 'No puedes finalizar tu compra. Debes realizar un pedido mínimo WooCommerce de %s sin IVA para finalizar su compra.' , // Pon aquí el texto que quieras que se muestre en la página de finalizar compra.
        wc_price( $minimum ), 
        wc_price( (WC()->cart->subtotal - WC()->cart->tax_total) )
      ), 'error'
      );
    }
  }
}
add_action( 'woocommerce_checkout_process', 'woocommerce_importe_minimo' );
add_action( 'woocommerce_before_cart' , 'woocommerce_importe_minimo' );

Establecer un pedido mínimo o máximo de un producto

Otra opción sería aplicar esto a un solo producto. Si hiciéramos un código para cada producto nos podríamos morir, así que vamos a crear un campo en la zona de Inventario dentro de cada producto para que nosotros o el cliente lo pueda modificar de forma sencilla:

add_action( 'woocommerce_product_options_inventory_product_data', 'dl_añadir_campo_minmax' );
function dl_añadir_campo_minmax() {

	echo '<div class="options_group">';
	woocommerce_wp_text_input( 
		array( 
			'id'          => '_wc_min_qty_product', 
			'label'       => __( 'Cantidad Mínima', 'woocommerce-max-quantity' ), 
			'placeholder' => '',
			'desc_tip'    => 'true',
			'description' => __( 'Opcional. Establece un límite de cantidad mínima permitida por pedido. Introduzca un número, 1 o más.', 'woocommerce-max-quantity' ) 
		)
	);
	echo '</div>';

	echo '<div class="options_group">';
	woocommerce_wp_text_input( 
		array( 
			'id'          => '_wc_max_qty_product', 
			'label'       => __( 'Cantidad Máxima', 'woocommerce-max-quantity' ), 
			'placeholder' => '',
			'desc_tip'    => 'true',
			'description' => __( 'Opcional. Establece un límite de cantidad máxima permitida por pedido. Introduzca un número, 1 o más.', 'woocommerce-max-quantity' ) 
		)
	);
	echo '</div>';	
}

add_action( 'woocommerce_process_product_meta', 'dl_guardar_minmax' );

function dl_guardar_minmax( $post_id ) {
	$val_min = trim( get_post_meta( $post_id, '_wc_min_qty_product', true ) );
	$new_min = sanitize_text_field( $_POST['_wc_min_qty_product'] );

	$val_max = trim( get_post_meta( $post_id, '_wc_max_qty_product', true ) );
	$new_max = sanitize_text_field( $_POST['_wc_max_qty_product'] );
	
	if ( $val_min != $new_min ) {
		update_post_meta( $post_id, '_wc_min_qty_product', $new_min );
	}

	if ( $val_max != $new_max ) {
		update_post_meta( $post_id, '_wc_max_qty_product', $new_max );
	}
}

Con esto nos queda un campo en cada producto desde el administrador de WooCommerce tal que así:

Campos de unidades máximas y mínimas en cada producto

Establecer pedido minimo en WooCommerce con Plugin

Como siempre hay quien prefiere seguir instalando plugins en vez de atreverse con código (snnipets), dejo dos opciones muy buenas con las que a veces he trabajado:

Min/Max Quantities de WooCommerce: Es el oficial de WooCommerce y es bastante completo. Te permite establecer tanto en pedidos como en productos un importe mínimo y máximo de compra, permitiendo a su vez excluir productos y crear reglas condicionales.

Woocommerce Minimum and Maximum Quantity: Este es más simple que el anterior y lo puedes encontrar gratis en el repositorio oficial.

Consejos de aplicación

Una vez que establezcas esta función sería conveniente informar a los visitantes de tu sitio web que solo podrán hacer el pedido si compran mas de X€. Para que una vez que lleguen al carrito no se encuentren con la sorpresa y cause rechazo. Sería bueno anunciarlo en la página de inicio o en la zona de ventajas competitivas que tengas en tu web.

¿Alguna duda o algo que comentar? ¡Hazlo! Publica tu comentario en esta entrada y abramos una interesante conversación… 😉

Deja una respuesta

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

Ver más

  • Responsable: Mario Gómez Luelmo.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a 1&1 IONOS España S.L.U. que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.