如何强制在订单邮件中显示发货数据?

问题描述 投票:0回答:1

由于支付网关规定仅限 60 个字符,我必须将 (shipping_address_1) 字段更改为另一个自定义字段,因此 woocommerce 无法识别我正在运送到另一个地址,因此它不会出现在电子邮件中,只有账单详细信息。我怎样才能让它像平常一样通过电子邮件发送?

我正在使用自定义结账字段插件,并尝试了几个在线解决方案,但没有成功,甚至尝试了functions.php中的代码,但它似乎仅用于本地取货。

woocommerce checkout
1个回答
0
投票

当您将真实的shipping_address_1保存到自定义字段时,然后在付款后,在

woocommerce_new_order
钩子上,使用WC_Order方法
set_shipping_address_1()
添加回真实的送货地址,如下例所示(其中
real_shipping_address_1
需要是替换为您的自定义字段的正确键)
:

add_action( 'woocommerce_new_order', 'add_back_shipping_address_1', 20, 2 );
function add_back_shipping_address_1( $order_id, $order ) {
    // Below, replace 'real_shipping_address_1' with the correct key
    $shipping_address_1 = $order->get_meta('real_shipping_address_1');

    if( ! empty($shipping_address_1) ) {
        $order->set_shipping_address_1($shipping_address_1);
        $order->save();
    }
}

代码位于子主题的functions.php 文件中(或插件中)。应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.