我的商店里有多种产品,但其中一种产品(易燃)只能通过特定的运输公司运输;不幸的是,该公司无法覆盖全国。因此,如果客户购买了易燃产品,并且该产品不在唯一可以运送该产品的公司的覆盖范围内,那么除了本地取货之外,他不应该看到任何其他运送选项。
到目前为止,我有这段代码(由不同的 StackOverFlow 答案提供):
function filter_woocommerce_package_rates( $rates, $package ) {
// Shipping zone
//echo 'entrando';
$shipping_zone = wc_get_shipping_zone( $package );
$product_ids = array( 2267 ); // HERE set the product IDs in the array
$method_id = 'weight_based_shipping:38'; // HERE set the shipping method ID that I want to hide
$found = false;
// Get zone ID
$zone_id = $shipping_zone->get_id();
//echo $shipping_zone;
//echo $zone_id;
// NOT equal
if ( $zone_id != 8 ) {
// Unset a single rate/method for a specific product
foreach( $package['contents'] as $cart_item ) {
if ( in_array( $cart_item['product_id'], $product_ids ) ){
$found = true;
break;
}
}
if ( $found )
unset( $rates[$method_id] );
}
return $rates;
}
add_filter( 'woocommerce_package_rates', 'filter_woocommerce_package_rates', 10, 2 );
但我不知道为什么不起作用。甚至“回声”也不起作用。
哔哔one