WooCommerce 运输方式 - 有条件隐藏基于账单和运输国家

问题描述

这是我的查询

我有不同的送货方式。 例如:

  1. 使用客户 A/C 发货 [请在上面的“快递信息”框中输入您的 Fedex/dhl/其他快递名称和帐号。]

  2. 印度境内免运费

  3. 国际

现在所有国家/地区都显示了上述所有内容

当帐单国家/地区为印度且发货国家/地区为印度时 –> 我想要第二个选项。 (印度免运费)

当帐单国家/地区不是印度且运输国家/地区为任何国家/地区时 –> 我想要第 1 个和第 3 个选项。

(截图链接https://ibb.co/v38z524

你能指导/分享我可以在函数文件中使用的相同钩子吗。

非常感谢。

问候, 施瑞达尔K

解决方法

这是我尝试过的方法,并且有效。

add_filter('woocommerce_package_rates','shipping_mathod_based_on_country',100,2); 函数shipping_mathod_based_on_country( $rates,$package ) { $country = WC()->customer->get_billing_country();

$condition = $country == "IN";


    if ( $condition ){
        $targeted_rate_id = 'free_shipping:4';
        unset($rates[$targeted_rate_id]);
        unset($rates['table_rate_shipping_international-1-unit']);  //to unset international
        unset($rates['table_rate_shipping_international-2-units']);
        unset($rates['table_rate_shipping_international-3-5-units']);
        unset($rates['table_rate_shipping_international-6-10-units']);
        unset($rates['table_rate_shipping_international-11-20-units']);
        unset($rates['table_rate_shipping_international-20-units']);
        
    }
    else{
        
        unset($rates['free_shipping:16']); //to unset free

        
    }
//}
return ! empty( $free ) && ! $condition ? $free : $rates;

}

参考链接:Conditionally hide shipping methods in WooCommerce