我想看看是否有可能禁用所有/特定的运输选项时,一个特定的运输类的产品在购物车.然而,此规则将仅适用于当特定的产品是购物车中的唯一项目.如果任何其他产品存在,然后默认的运输选项将显示.这是我以前使用过的
add_filter( 'woocommerce_package_rates', 'custom_hide_shipping_for_shipping_class', 9999, 2 );
function custom_hide_shipping_for_shipping_class( $rates, $package ) {
$shipping_class_target = 569; // shipping class ID
$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 with ID
}
return $rates;
}
字符串
然而,上述代码将工作,尽管其他产品在购物车。我只希望这是工作,如果特定的产品是在购物车中的唯一项目。
上面的代码可以调整吗?或者它需要不同的方法?
1条答案
按热度按时间tmb3ates1#
要使其工作,只有当特定的产品是购物车中的唯一项目,尝试以下操作:
字符串
应该能用
要隐藏多个目标运输方法,请使用以下命令:
型