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

如何让自定义字段替代的WooCommerce配送地址显示在订单邮件中?

解决WooCommerce自定义配送地址字段在订单邮件不显示的问题

方案一:同步自定义字段到原生配送地址字段(推荐)

核心是把你自定义的配送地址字段值同步到WooCommerce原生的shipping_address_1字段,这样所有依赖原生字段的功能(包括订单邮件)都会正常工作。

把以下代码添加到主题的functions.php文件,或者自定义插件中:

// 同步自定义配送地址到WooCommerce原生字段
add_action('woocommerce_checkout_create_order', 'sync_custom_shipping_to_native', 10, 2);
function sync_custom_shipping_to_native($order, $checkout_data) {
    // 替换成你实际使用的自定义字段name
    $custom_addr = isset($_POST['custom_shipping_address_1']) ? sanitize_text_field($_POST['custom_shipping_address_1']) : '';
    
    if (!empty($custom_addr)) {
        // 更新订单的原生配送地址1
        $order->set_shipping_address_1($custom_addr);
        
        // 如果还有其他自定义配送字段(比如地址2、城市),参照下面的方式同步
        // $custom_addr2 = isset($_POST['custom_shipping_address_2']) ? sanitize_text_field($_POST['custom_shipping_address_2']) : '';
        // $order->set_shipping_address_2($custom_addr2);
        // $custom_city = isset($_POST['custom_shipping_city']) ? sanitize_text_field($_POST['custom_shipping_city']) : '';
        // $order->set_shipping_city($custom_city);
    }
}

注意:要把代码里的custom_shipping_address_1替换成你结账页面实际使用的自定义字段名称(可以通过浏览器开发者工具查看字段的name属性)。如果有其他自定义配送字段,按注释里的逻辑添加同步即可。

方案二:直接修改订单邮件模板显示自定义字段

如果不想同步字段,也可以直接修改邮件模板,强制显示自定义字段的内容:

  1. 在你的主题根目录下新建woocommerce/emails文件夹
  2. 复制WooCommerce插件目录中templates/emails/email-addresses.php文件到这个新建的文件夹
  3. 打开复制后的文件,找到配送地址的输出区块(在if ( $order->needs_shipping_address() )代码块内)
  4. 找到原生的get_shipping_address_1()调用,替换为自定义字段的取值:
// 替换原有配送地址1的输出代码
$custom_shipping_addr = get_post_meta( $order->get_id(), '_custom_shipping_address_1', true );
echo wp_kses_post( $custom_shipping_addr . '<br/>' );

如果需要兼容原生字段(比如自定义字段为空时显示原生值),可以写成:

$custom_shipping_addr = get_post_meta( $order->get_id(), '_custom_shipping_address_1', true );
$display_addr = !empty($custom_shipping_addr) ? $custom_shipping_addr : $order->get_shipping_address_1();
echo wp_kses_post( $display_addr . '<br/>' );

注意:_custom_shipping_address_1是自定义字段存储在订单元数据中的键名,通常插件添加的字段会带下划线前缀,你可以在WooCommerce订单编辑页面的「自定义字段」区域查看实际键名,或者通过数据库的wp_postmeta表确认。

额外排查点

  • 确认自定义结账字段插件已经把字段值保存到了订单的元数据中
  • 如果使用方案一,测试结账流程,查看订单编辑页面的配送地址是否已经同步为自定义字段的值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:20:05