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

如何从WooCommerce结账页面获取用于运费计算的收货地址

WooCommerce结账页运费计算收货地址获取方案

该需求完全可实现,WooCommerce用于运费计算的收货地址会优先取结账页用户实时填写/选择的临时地址,而非用户账号中绑定的固定默认地址,你可以通过两种方式获取:

1. 直接读取当前会话运费地址

无需调用Hook,直接使用WC()->customer对象的shipping相关方法即可获取,你之前打印的对象本身就包含了实时同步的运费地址字段:

// 获取完整的运费计算收货地址数组
$shipping_address = WC()->customer->get_shipping();

// 也可以单独获取对应字段,示例:
$shipping_country = WC()->customer->get_shipping_country();
$shipping_state = WC()->customer->get_shipping_state();
$shipping_city = WC()->customer->get_shipping_city();
$shipping_postcode = WC()->customer->get_shipping_postcode();
$shipping_address_1 = WC()->customer->get_shipping_address_1();
$shipping_address_2 = WC()->customer->get_shipping_address_2();

上述代码返回的地址和WooCommerce当前会话运费计算调用的地址完全一致,自动同步了用户在结账页修改后还未提交订单的临时地址。如果你的站点开启了「账单地址作为收货地址」配置,返回结果会自动同步为用户填写的账单地址,和系统运费计算逻辑保持一致。

2. 钩子监听获取运费计算地址

如果你需要在运费计算、订单创建的节点动态获取/修改地址,可以使用对应钩子:

  • 运费计算过程中获取地址:用woocommerce_after_calculate_totals钩子
add_action('woocommerce_after_calculate_totals', 'get_shipping_address_during_calculate', 10, 1);
function get_shipping_address_during_calculate($cart) {
    $current_calc_shipping_address = $cart->get_customer()->get_shipping();
    // 此处写入你的业务逻辑
}
  • 结账提交订单时获取对应运费地址:用woocommerce_checkout_create_order钩子
add_action('woocommerce_checkout_create_order', 'get_shipping_address_when_submit_order', 10, 2);
function get_shipping_address_when_submit_order($order, $data) {
    $order_shipping_address = $order->get_address('shipping');
    // 此处写入你的业务逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:09:03