Limitar monto a envío gratuito en WooCommerce

Para empezar, queremos que los usuarios sepan cuánto les falta para obtener el envío gratuito. Para ello, agregaremos un aviso en el carrito de compras que les informará sobre el monto restante necesario.

Paso 1: Abre el archivo functions.php de tu tema hijo o tema activo, aunque también podes usar algun plugin del tipo snippet PHP.

Paso 2: Añade el siguiente código PHP al final del archivo:

<?php
add_action( 'woocommerce_before_cart', 'show_free_shipping_notice' );
 
function show_free_shipping_notice() {
    $minimum_free_shipping_amount = 100; // Define el monto mínimo para envío gratuito
    
    $cart_total = WC()->cart->subtotal;
    
    $remaining_for_free_shipping = $minimum_free_shipping_amount - $cart_total;
    
    if ( $remaining_for_free_shipping > 0 ) {
        echo '<div class="free-shipping-notice">';
        printf( '¡Agrega %s más a tu carrito para obtener el envío gratuito!', wc_price( $remaining_for_free_shipping ) );
        echo '</div>';
    }
}

Este código calculará cuánto falta para alcanzar el monto mínimo para obtener el envío gratuito y mostrará un aviso en el carrito de compra si es necesario.

 

Limitando el Envío Gratuito.

Una vez que se cumpla la condición de monto mínimo para el envío gratuito, queremos asegurarnos de que solo se ofrezca esta opción de envío. Para hacerlo, podemos modificar las opciones de envío según la situación.

Paso 1: Añade el siguiente código PHP al final del archivo functions.php:

<?php
add_filter( 'woocommerce_package_rates', 'limit_free_shipping', 10, 2 );

function limit_free_shipping( $rates, $package ) {
    $minimum_free_shipping_amount = 100; // Define el monto mínimo para envío gratuito
    
    $cart_total = WC()->cart->subtotal;
    
    if ( $cart_total >= $minimum_free_shipping_amount ) {
        // Elimina todos los métodos de envío excepto el gratuito si el total del carrito es mayor o igual al monto mínimo
        foreach ( $rates as $rate_id => $rate ) {
            if ( 'free_shipping' !== $rate->method_id ) {
                unset( $rates[ $rate_id ] );
            }
        }
    }
    
    return $rates;
}

Este código garantiza que, una vez que el total del carrito alcance o supere el monto mínimo para el envío gratuito, solo se ofrezca esa opción de envío al eliminar todas las demás.

Con estos pasos, has configurado un sistema que informa a los usuarios sobre el monto restante necesario para obtener el envío gratuito y limita las opciones de envío una vez que se cumple esa condición. ¡Espero que este tutorial te haya sido útil! Si tienes alguna pregunta, ¡no dudes en dejar un comentario!

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
Back to Top
0
Would love your thoughts, please comment.x
()
x