今天的目标是检查具有特定运输类的产品是否在购物车中,因此如果是真的,则禁用免费送货。这是非常有用的,当有多个项目在购物车,您不想给免费送货某些订单。

WooCommerce Snippet(版本 2.6+):禁用免费送货(对于特定运送区域)如果购物车具有特定运送类别的产品
/**
* @snippet Disable Free Shipping if Cart has Shipping Class (WooCommerce 2.6+)
* @sourcecode https://businessbloomer.com/?p=19960
* @author Rodolfo Melogli
* @testedwith WooCommerce 2.6.1
*/
add_filter( 'woocommerce_package_rates', 'businessbloomer_hide_free_shipping_for_shipping_class', 10, 2 );
function businessbloomer_hide_free_shipping_for_shipping_class( $rates, $package ) {
$shipping_class_target = 15; // shipping class ID (to find it, see screenshot below)
$in_cart = false;
foreach( WC()->cart->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 with ID (to find it, see screenshot below)
}
return $rates;
}
WooCommerce Snippet (version 2.5 and below): Disable Free Shipping if Cart has Product with Specific Shipping Class
/**
* @snippet Disable Free Shipping if Cart has Shipping Class
* @sourcecode https://businessbloomer.com/?p=19960
* @author Rodolfo Melogli
* @testedwith WooCommerce 2.5.2
*/
add_filter( 'woocommerce_package_rates', 'businessbloomer_hide_free_shipping_for_shipping_class', 10, 2 );
function businessbloomer_hide_free_shipping_for_shipping_class( $rates, $package ) {
$shipping_class_target = 15; // shipping class ID (to find it, see screenshot below)
$in_cart = false;
foreach( WC()->cart->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'] );
return $rates;
}
WooCommerce: How to Find Shipping Class ID (Woo 2.6+, after the introduction of the new Shipping Zones)

WooCommerce: How to Find Shipping Method ID (Woo 2.6+, after the introduction of the new Shipping Zones)

WooCommerce: How to Find Shipping Class ID (Woo 2.5 and below)
可以在哪里添加此代码?
您可以将 PHP 代码片段放置在主题或子主题的 functions.php 文件的底部(如果是 CSS 代码,请添加到主题的 style.css 文件底部),修改之前建议先备份原始文件,若出现错误请先删除此代码。
这段代码是否正常可用?
或是您有更好的解决方案想要分享?请到薇晓朵 WooCommerce 中文论坛 留言告知,我们希望可以帮到更多国内的 WooCommerce 用户也希望您的参与。
需要关于 WooCommerce 的帮助 ?
请观看我们提供的免费视频教程或到薇晓朵 WooCommerce 中文论坛提问,会有专业技术团队提供相关帮助。