我需要取消设置WooCommerce的运费,并且已经提出了这个功能,在订单中的产品循环并增加了它们的重量。如果重量大于50磅,我需要取消设置UPS选项:
add_filter( 'coocommerce_package_rates', 'hide_ups_over_50', 10, 2 );
function hide_ups_over_50( $rates, $package ) {
$totalWt = 0;
$items = $package[contents];
foreach ($items as $item) {
$quantities[] = $item[quantity];
if ( strlen( $item[variation_id] ) ) {
$prodIDs[] = $item[variation_id];
} else {
$prodIDs[] = $item[product_id];
}
$productMeta = get_post_meta($item[product_id]);
$itemWt = $productMeta['_weight'][0];
$totalWt = $totalWt + ($itemWt * $item['quantity'] );
}
if( $totalWt > 50 ) {
unset( $rates['ups:03'] );
}
// Return what's left of the $rates array
return $rates;
}
我已经尝试将它放在我主题的functions.php文件中,并且还使用我编写的插件中的计算和unset()调用来计算运费。无论哪种方式,它都没有取消ups:03运费。如果可以避免,我宁愿不编辑UPS插件。这个函数应该在哪里调用?