Php 在WooCommerce中小计大于0时隐藏免费配送

Php 在WooCommerce中小计大于0时隐藏免费配送,php,woocommerce,cart,subtotal,shipping-method,Php,Woocommerce,Cart,Subtotal,Shipping Method,我正在为WooCommerce插件使用免费产品示例,并尝试仅为示例产品设置条件免费送货,示例产品成本为0,因此我尝试隐藏免费送货,除非订单小计金额为0 简而言之: 我只想为样品产品提供免费送货,免费送货方法应该只对小计=0的产品可见 进一步澄清的屏幕截图: 我的尝试代码: 函数ts\u hide\u shipping\u用于订单总额($rates){ $rate=array(); $order_total=WC()->cart->get_subtotal(); 如果($order_total

我正在为WooCommerce插件使用免费产品示例,并尝试仅为示例产品设置条件免费送货,示例产品成本为0,因此我尝试隐藏免费送货,除非订单小计金额为0

简而言之:

我只想为样品产品提供免费送货,免费送货方法应该只对小计=0的产品可见

进一步澄清的屏幕截图:


我的尝试代码:

函数ts\u hide\u shipping\u用于订单总额($rates){
$rate=array();
$order_total=WC()->cart->get_subtotal();
如果($order_total>0){
foreach($rate作为$rate\u id=>$rate){
如果('free\u shipping:20'=$rate->get\u method\u id()){
$rate[$rate\u id]=$rate;
}
}
}
返回!空($free)?$free:$rates;
}
添加过滤器(“woocommerce\u package\u rates”、“ts\u hide\u shipping\u for\u order\u total”,100);

add_filter('woocommerce_package_rates','hide_shipping_,当可用时,本地除外,'100');
当可用时,功能隐藏装运(本地除外)(费率){
$free=$local=array();
foreach($rate作为$rate\u id=>$rate){
如果('free_shipping:20'=$rate->method_id){
$free[$rate\u id]=$rate;
}
}
返回!空($free)?数组\合并($free,$local):$rates;
}

但这两种代码都没有给我想要的结果。有人能给我指出正确的方向吗?

要隐藏/取消设置“免费送货”,只要小计大于0,您可以使用以下命令

所以你得到:

function filter\u woodcommerce\u package\u费率($rates,$package){
//小计
$subtotal=$package['cart_subtotal'];
//如果小计>0,则隐藏免费送货
如果($subtotal>0){
//环槽
foreach($rate作为$rate\u id=>$rate){
如果($rate->method\u id==='免费送货'){
未设置($rates[$rate_id]);
}
}   
}
返回美元汇率;
}
添加过滤器('woocommerce\u package\u rates','filter\u woocommerce\u package\u rates',10,2);

附加问题:小计$rate时隐藏其他方法{ 如果($rate->method\u id==='免费送货'){ //如果小计>0,则隐藏免费送货 如果($subtotal>0){ 未设置($rates[$rate_id]); } }否则{ //小计时隐藏其他方法