我正在建立一个带有运输的网站,但是我收集了所有运输区域的物品,并且可以在所有运输区域中发送物品。
所以我已经为所有区域设置了运输类别。
我正在使用“ Hide shipping method for specific shipping classes in woocommerce” 答案代码,这是我所需要的。
但是我可以输入所有统一费率送货方式,而不是输入每个统一费用ID ,因此,当我添加其他统一费率送货设置时,它将为它工作,而无需我更改代码。
希望您能理解我的追求。任何帮助表示赞赏。
答案 0 :(得分:0)
要将其用于所有“固定费用”运输方式和某些其他定义的运输方式,您将改为使用以下内容:
add_filter( 'woocommerce_package_rates', 'hide_shipping_method_based_on_shipping_class', 10, 2 );
function hide_shipping_method_based_on_shipping_class( $rates, $package )
{
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
// HERE define your shipping class to find
$class = 92;
// HERE define the shipping methods you want to hide (others than "flat rate")
$method_key_ids = array('local_pickup:3');
$found = false;
// Checking in cart items
foreach( $package['contents'] as $cart_item ){
// If we find the shipping class
if( $cart_item['data']->get_shipping_class_id() == $class ){
$found = true;
break; // Stop the loop
}
}
if( ! $found )
return $rates;
// Loop through shipping methods
foreach( $rates as $rate_key => $rate ) {
// Targetting "Flat rate" and other defined shipping mehods
if( 'flat_rate' === $rate->method_id || in_array($rate->id, $method_key_ids) ) {
unset($rates[$rate_key]);
}
}
return $rates;
}
代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。
刷新运输缓存: (必需)
- 此代码已保存在活动主题的function.php文件中。
- 购物车是空的
- 在运输区域设置中,禁用/保存任何运输方式,然后启用“后退” /保存。