Woocommerce

Cuento dinero falta para obtener envío gratuito

Gracias a este snippet podremos mostrar un mensaje en el carrito con lo que falta de pedido para que los gastos de envío salgan gratis. Para configurarlo tan solo tienes que crear:

Una opción de envío gratis a partir de un gasto mínimo (desde WooCommerce > Ajustes > Envíos)
indicar en el código snippet esa cantidad mínima y el mensaje que desees mostrar.
Para definir la cantidad mínima de pedido reemplaza el número 60 de la línea 7 por el gasto mínimo que te interese.

Para cambiar el mensaje reemplaza la frase entre comillas de la línea 8 por el texto que quieras.

Variables disponibles:

/ Muestra un mensaje de upsell en el carrito cuando el cliente aún no ha alcanzado el gasto mínimo para envío gratis
if ( in_array( 'woocommerce/woocommerce.php', get_option( 'active_plugins' ) ) ){

	add_action( 'woocommerce_after_calculate_totals', 'add_upsell_message_for_free_shipping' );
	function add_upsell_message_for_free_shipping( $cart ){
	
		$min_amount = 60; // Escribe aquí el gasto mínimo que debe hacer el cliente para conseguir envío gratis. Por ejemplo, si ofreces envío gratis a partir de 60€, entonces escribe 60
		$upsell_message = 'Recuerda que si haces un pedido de {{min_amount}}, los gastos de envío te salen GRATIS. Añade algún producto más al carrito y ¡ahórrate los portes!';
	
		// No muestra nada si no está en la página de carrito
		if ( !is_cart() ) {	
			return;
		}
	
		// Obtiene el importe total del carrito
		$cart_total = WC()->cart->subtotal;
	
		// Reemplaza la variable {{min_amount}}
		$currency = get_woocommerce_currency();
		$upsell_message = str_replace( '{{min_amount}}' , $min_amount.$currency, $upsell_message );
	
		// Reemplaza la variable {{remaining_amount}}
		$remaining_amount = $min_amount - $cart_total;
		$remaining_amount .= $currency;
		$upsell_message = str_replace( '{{remaining_amount}}' , $remaining_amount, $upsell_message );
	
		if ( !empty( $min_amount ) && ( $min_amount > $cart_total ) ) {
	
			// Muestra el mensaje upsell
	            	wc_add_notice( $upsell_message, 'notice' );
		}
	}
}