如何针对指定配送区域名称及配送方式ID更新配送成本?
WooCommerce配送区域成本更新方案
1. 更新特定配送区域的成本
要更新特定配送区域的成本,核心逻辑是定位目标区域后,遍历该区域下的所有配送方式,逐个修改成本设置并保存:
- 遍历系统内所有配送区域,匹配目标区域名称
- 循环该区域下的所有配送方式
- 修改每个配送方式的成本参数,完成持久化保存
2. 针对指定配送区域名称及配送方式ID更新成本
针对你给出的场景(目标区域「Hrvatska」、配送方式「flat_rate」,成本更新为5),只需在匹配到目标对象后,修改其配置并保存即可。完整代码如下:
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; // 获取当前配送方式的配置数组 $settings = $shipping_method->get_settings(); // 更新成本值 $settings['cost'] = $new_cost; // 应用更新后的配置 $shipping_method->update_settings($settings); // 将配置持久化到数据库 $shipping_method->save(); } } } }
关键逻辑说明
get_settings():获取配送方式的当前配置集合,其中包含控制成本的cost字段update_settings($settings):将修改后的配置同步到配送方式对象save():把更新后的配置写入数据库,确保修改永久生效
内容的提问来源于stack exchange,提问作者Marko
相关产品推荐
相关产品推荐

