Php 在WooCommerce中按配送区域添加配送方式

Php 在WooCommerce中按配送区域添加配送方式,php,wordpress,woocommerce,hook-woocommerce,shipping-method,Php,Wordpress,Woocommerce,Hook Woocommerce,Shipping Method,当客户地址位于特定的配送区域时,我想添加一种特定的配送方式。在搜索Stackoverflow时,我发现很多代码片段基于某些条件删除了shipping方法,但没有发现添加shipping方法的代码片段。 所需的装运方式存在于选项中,默认情况下禁用,它是ID为7的固定费率。 以下是我尝试过的: add_filter('woocommerce_package_rates'、'add_shipping_method_基于_shipping_zone'、10、2); 功能添加装运方法基于装运区域($rat

当客户地址位于特定的配送区域时,我想添加一种特定的配送方式。在搜索Stackoverflow时,我发现很多代码片段基于某些条件删除了shipping方法,但没有发现添加shipping方法的代码片段。 所需的装运方式存在于选项中,默认情况下禁用,它是ID为7的固定费率。 以下是我尝试过的:

add_filter('woocommerce_package_rates'、'add_shipping_method_基于_shipping_zone'、10、2);
功能添加装运方法基于装运区域($rates,$package)
{
if(定义了('DOING'uajax'))
返回;
$shipping\u zone=wc\u get\u shipping\u zone($package);
$zone_id=$shipping_zone->get_id();
如果($zone_id==3){
//在这里添加一个在shipping options中被禁用的现有装运方法有些神奇
$rates[]='flat_rate:7';//这不起作用,看起来我还必须插入所有装运方法属性
}
返回美元汇率;
}
区域匹配逻辑按预期工作,但我无法确定如何将现有的配送方法添加到$rates对象。
此外,我无法通过“woocommerce\u package\u rates”过滤器打印$rates和$package内容,尽管它在不久前似乎还可以工作。因此,欢迎任何关于如何在购物车页面上打印这些对象的建议。

禁用装运方法时,
$rates
中不存在该方法,因此可以选择启用该方法并使用一些反向逻辑

function filter\u woodcommerce\u package\u费率($rates,$package){
//航运区
$shipping\u zone=wc\u get\u shipping\u zone($package);
//获取区域ID
$zone_id=$shipping_zone->get_id();
//不相上下
如果($zone_id!=3){
//取消设置单一费率/方法
未结算($rates['flat_rate:7']);
}
返回美元汇率;
}
添加过滤器('woocommerce\u package\u rates','filter\u woocommerce\u package\u rates',10,2);

谢谢您的回答。我知道如何让它以这种方式工作,我感兴趣的是如何以相反的方式实现结果-通过添加装运方法而不是删除它。我想我应该得到所需的shipping方法实例并将其附加到$rates对象,或者应该使用其他一些钩子。。。