由于支付网关规定仅限 60 个字符,我必须将 (shipping_address_1) 字段更改为另一个自定义字段,因此 woocommerce 无法识别我正在运送到另一个地址,因此它不会出现在电子邮件中,只有账单详细信息。我怎样才能让它像平常一样通过电子邮件发送?
我正在使用自定义结帐字段插件,并尝试了几个在线解决方案但没有成功,甚至尝试了functions.php中的代码,但似乎它仅用于本地取货。
当您将真实的shipping_address_1保存到自定义字段时,然后在付款后,在
woocommerce_new_order
钩子上,使用WC_Order方法set_shipping_address_1()
添加回真实的送货地址,如下例所示(其中custom_field_key
需要是替换为您的自定义字段的正确键):
add_action( 'woocommerce_new_order', 'add_back_shipping_address_1', 20, 2 );
function add_back_shipping_address_1( $order_id, $order ) {
// Below, replace 'custom_field_key' with the correct key
$shipping_address_1 = $order->get_meta('custom_field_key');
if( ! empty($shipping_address_1) ) {
$order->set_shipping_address_1($shipping_address_1);
$order->save();
}
}
代码位于子主题的functions.php 文件中(或插件中)。应该可以。
这样,送货地址将显示在所有订单和电子邮件通知中。