Ejemplo de como modificar gastos de envío en wordpress según la cantidad de items que tenemos en el carrito, muy útil cuando en la tienda se vende productos con cierto peso y que los gastos varían mucho a cuando se compran lotes de productos. También incluye envío gratis a partir de cierto total de compra.
//Gastos de envío personalizados or cantidad de productos
add_action('woocommerce_cart_calculate_fees', 'envio_por_cantidad_de_items');
function envio_por_cantidad_de_items() {

    if (is_admin() && !defined('DOING_AJAX')) return;

    WC()->shipping->reset_shipping();


    // Evitar que se dupliquen tarifas
    if (!empty(WC()->cart->fees_api()->get_fees())) return;
    
    $items_count = WC()->cart->get_cart_contents_count();
    $cart_total  = WC()->cart->get_subtotal(); // subtotal sin descuentos
    $costo_envio = 0;

    $monto_envio_gratis = 100;

    // Envío gratis por monto
    if ($cart_total >= $monto_envio_gratis) {
        WC()->cart->add_fee('Envío Gratis', 0);
        return;
    }

    // Costos por cantidad
    if ($items_count >= 1 && $items_count <= 3)         $costo_envio = 5.10;
    elseif ($items_count >= 4 && $items_count <= 6)     $costo_envio = 10.20;

    if ($costo_envio > 0) {
        WC()->cart->add_fee('Gastos de envío', $costo_envio);
    }
}

Editado
2
Puntos
190
Visitas
1
Resp
Por alber hace 1 mes
Admin
Respuesta #1
genial, estaría bien que publicaras como configurar zonas de envío para que en el resumen del carrito final no aparezcan las zonas donde no se envía
0
Puntos
Por proelite hace 1 mes
Novice
Para comentar Inicia sesión o Regístrate
Phpres 2025@ All rights reserved.
Utilizamos cookies para mejorar la navegación en el sitio. Más información Aceptar