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:
“{{min_amount}}” Muestra la cantidad mínima que hayas definido.
“{{remaining_amount}}” Indica la cantidad que le falta al cliente para alcanzar el pedido mínimo con envío gratis. (Teniendo en cuenta los impuestos)
Snippet que muestra un mensaje en el carrito de WooCommerce para envío gratis
/ 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' ); } } }