【问题标题】:How to update cost for a specific shipping zone?如何更新特定运输区域的成本?
【发布时间】:2023-01-12 21:46:33
【问题描述】:
如何更新特定区域名称和方法 ID 的运费?
foreach (WC_Shipping_Zones::get_zones() as $shipping_zone) {
if($shipping_zone['zone_name'] == 'Hrvatska') {
foreach($shipping_zone['shipping_methods'] as $shipping_method) {
if($shipping_method->id == 'flat_rate') {
$new_cost = 5;
// how to update cost?
}
}
}
}
【问题讨论】:
标签:
wordpress
woocommerce
【解决方案1】:
以这种方式更新特定运输区域统一费率运输方式的成本:
foreach (WC_Shipping_Zones::get_zones() as $shipping_zone) {
if($shipping_zone['zone_name'] == 'Hrvatska') {
foreach($shipping_zone['shipping_methods'] as $shipping_method) {
if($shipping_method->id == 'flat_rate') {
$new_cost = 5;
// Update the cost of the shipping method
$shipping_method->instance_settings['cost'] = $new_cost;
$shipping_method->update_instance_settings($shipping_method->instance_id, $shipping_method->instance_settings);
}
}
}
}
您需要获取要更新的方法的 instance_id,然后使用 update_instance_settings() 方法更新成本,在您的情况下为 $shipping_method->instance_id 和 $shipping_method->instance_settings
还需要注意的是,您应该在更新 instance_settings 属性后调用 update_instance_settings() 方法以将更改保存到数据库中。