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
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.
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
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