Nuestro objetivo es verificar si un producto con una clase de envío específica está en el carrito y, en consecuencia, deshabilitar una tarifa de envío, como el envío gratuito si esto es cierto.
Esto es muy útil cuando hay varios artículos en el carrito y no desea dar envío gratuito para ciertos pedidos, por ejemplo.
Php Snippet: Deshabilitar la tasa de envío gratuita si WooCommerce Cart contiene producto con clase de envío específica
/** n*@snippet Disable Free Shipping if Cart has Shipping Class n*@how-to https://tdestudiodesign.com/tutoriales n*@author Tomás Lucas D´Amario, TD Estudio Design n*@testedwith WooCommerce 8 n*@community https://tdestudiodesign.com/club */ add_filter( 'woocommerce_package_rates', 'tddesign_hide_free_shipping_for_shipping_class', 9999, 2 ); function tddesign_hide_free_shipping_for_shipping_class( $rates, $package ) { $shipping_class_target = 15; // shipping class ID (see screenshot below) $in_cart = false; foreach ( WC()->cart->get_cart_contents() as $key => $values ) { if ( $values[ 'data' ]->get_shipping_class_id() == $shipping_class_target ) { $in_cart = true; break; } } if ( $in_cart ) { unset( $rates['free_shipping:8'] ); // shipping method ID (see screenshot below) } return $rates; }
¿Las tarifas de envío no se esconden después de implementar PHP?
Probablemente necesite borrar las sesiones del cliente: