【发布时间】:2017-07-12 22:29:06
【问题描述】:
仅当购物车中的产品同时包含和不包含运费等级时,我才尝试取消设置统一费率配送方式。如果购物车中的所有产品都有运输等级,那么它应该保留。
有这种送货方式:统一费率 - (flat_rate1) (instance_id=1)
还有这些运输等级:50、100 等等,以同样的方式命名 Slugs:50、100……
统一费率运输方式为这些运输类别设置了成本,未设置此方法的主要成本和无运输类别成本,因此它仅显示在购物车中设置了运输类别的产品。
搞定了
add_filter( 'woocommerce_package_rates', 'unset_shipping_for_unmatched_items', 100, 2 );
function unset_shipping_for_unmatched_items( $rates, $package ) {
// Initialisation
$shipping_classes = array( 50, 100, 150, 200, 250, 300 );
$cart_items = WC()->cart->get_cart();
$cart_items_count = WC()->cart->get_cart_contents_count();
$items_match = false;
$inArray = 0;
$notInArray = 0;
foreach( $cart_items as $cart_item ){
if( in_array( $cart_item[ 'data' ]->get_shipping_class(), $shipping_classes ) && $cart_items_count > 1 ) {
$inArray++;
} else {
$notInArray++;
}
}
if( ( $cart_items_count == $notInArray ) || ( $cart_items_count == $inArray ) ){
$items_match = false;
} else {
$items_match = true;
}
if( $items_match )
unset( $rates['flat_rate:6'] );
return $rates;
}
【问题讨论】:
标签: php wordpress woocommerce cart shipping