WooCommerce: deshabilite la tarifa de envío si la variación ID @ Cart

Un cliente necesitaba deshabilitar todos los métodos de envío, excepto la Recogida local, para una determinada ID de variación. Esto puede ser útil si está recorriendo las variaciones en el carrito/página de pago (verifique si la identificación de la variación está en el carrito, por ejemplo), ¡así que aquí tiene!

Dónde encontrar ID de variación – WooCommerce

WooCommerce Buscar ID de variación
WooCommerce Buscar ID de variación

Fragmento de PHP: deshabilite las tarifas de envío si el ID de variación está en el carrito – WooCommerce

/**
 * @snippet       WooCommerce Disable Shipping Rates if Variation ID @ Cart
 * @how-to        Get CustomizeWoo.com FREE
 * @sourcecode    https://businessbloomer.com/?p=17436
 * @author        Rodolfo Melogli
 * @compatible    WooCommerce 3.4.4
 */
 
add_filter( 'woocommerce_package_rates', 'bbloomer_unset_woocommerce_shipping_methods_when_ids', 10 ,2 );
 
function bbloomer_unset_woocommerce_shipping_methods_when_ids ( $rates, $package ) {
 
   // loop through the cart
   foreach ( WC()->cart->get_cart() as $cart_item_key => $values ) {
 
   $_product = $values['data'];
 
        // if product variation id @ Cart, disable all but Local Pickup
   if( $_product->variation_id == 3102 || $_product->variation_id == 3103 || $_product->variation_id == 3093 || $_product->variation_id == 3094 ) {
 
      $local_pickup = $rates['local_pickup'];
           $rates = array();
           $rates['local_pickup'] = $local_pickup;
      }
 
   }
 
   return $rates;
 
}

Deja un comentario