Pago de WooCommerce: cómo dar envío gratis para una dirección específica

2 minutos de lectura

El siguiente código permitirá el envío gratuito para un producto específico:

    function wcs_my_free_shipping( $is_available ) {
    global $woocommerce;

    // set the product ids that are eligible
    $eligible = array( '360' );

    // get cart contents
    $cart_items = $woocommerce->cart->get_cart();

    // loop through the items looking for one in the eligible array
    foreach ( $cart_items as $key => $item ) {
        if( in_array( $item['product_id'], $eligible ) ) {
            return true;
        }
    }

    // nothing found return the default value
    return $is_available;
   }
   add_filter( 'woocommerce_shipping_free_shipping_is_available', 'wcs_my_free_shipping', 20 );

Lo que me gustaría hacer es permitir el envío gratuito no para un producto, sino para una combinación específica de calle y código postal en la dirección de entrega. Descubrí cómo verificar esto para un usuario que inició sesión, pero parece que no puedo encontrar las variables correctas que tienen esta información al finalizar la compra. Cualquier ayuda sería muy apreciada.

Gracias de antemano, -Ben

  • cambiar el foreach(){} con su lógica de comprobar la dirección. return true significa que es un envío gratis.

    –Reigel Gallarde

    22 de diciembre de 2015 a las 3:13

Ya hay zonas de envío disponibles en Woocommerce. Para cada zona específica, puede establecer el método de envío, ya sea “Tarifa plana” o “Envío gratuito”. Puede verificarlo en Woocommerce-> Configuración. Busque la pestaña Envío.

Captura de pantalla de la pestaña de envío

avatar de usuario
HacerWebMejor

Sí, puedes, hay un parámetro adicional que puedes pasar a este paquete $ de nombres de enlace.
por ej.

   add_filter( 'woocommerce_shipping_free_shipping_is_available', 'wcs_my_free_shipping', 20,2 );

function wcs_my_free_shipping( $is_available, $package){
//Your code for free shipping  for a selected address found in $package
return $is_available
}

$paquete contiene la dirección que ingresó para que pueda usarla para aplicar el envío gratis para códigos postales o calles seleccionadas

¿Ha sido útil esta solución?