You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WooCommerce Local Pickup Plus:取件点地址同步订单配送地址问题

解决方案

你的代码核心问题是未正确获取Local Pickup Plus取件点的地址数据,导致$address_1等变量未定义,最终清空了订单配送地址。以下是修正后的实现思路和代码:

关键思路

Local Pickup Plus会将选中的取件点ID存储在配送方式的元数据中,我们可以通过这个ID实例化取件点对象,从中提取完整的地址信息,再赋值给订单。

修正后的代码

add_action('woocommerce_checkout_create_order', function($order){
    foreach($order->get_shipping_methods() as $method){
        // 确认是Local Pickup Plus配送方式
        if($method->get_method_id() === 'local_pickup_plus'){
            // 获取取件点ID
            $location_id = $method->get_meta('_pickup_location_id');
            
            if($location_id && class_exists('WC_Location')){
                // 实例化取件点对象,获取地址数据
                $location = new WC_Location($location_id);
                
                // 将取件点地址赋值给订单配送地址
                $order->set_shipping_country($location->get_country());
                $order->set_shipping_address_1($location->get_address());
                $order->set_shipping_address_2($location->get_address_2());
                $order->set_shipping_postcode($location->get_postcode());
                $order->set_shipping_city($location->get_city());
            }
            break;
        }
    }
});

额外说明

  • 确保WC_Location类可用:这个类是Local Pickup Plus插件提供的核心类,只要插件激活就会加载。
  • 兼容性:如果你的Local Pickup Plus版本较旧,取件点元数据的键可能不同,可以通过查看订单配送方式的元数据(在wp_postmeta表中,关联订单ID和配送方式ID)确认正确的键名。
  • 测试:修改代码后,创建测试订单选择自提,查看订单详情页的配送地址是否已替换为取件点地址,同时导出订单验证数据是否正确。

内容的提问来源于stack exchange,提问作者Diadh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:25:01