WooCommerce - 在结帐和订单电子邮件中添加一个新字段

WooCommerce - Add a new field to the checkout and order email

您好,我正在尝试在我的结帐页面中添加一个送货电子邮件字段,我希望它也显示在订单电子邮件中。

环顾四周后,我终于想到了我放入 functions.php 中的这段代码:一切正常(我在结帐页面中有新字段,我在订单的管理面板中有它).它仍然没有出现在通知电子邮件中。我做错了什么?

下面是我的代码

// Hook in the checkout page
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

// Our hooked in function - $fields is passed via the filter!

function custom_override_checkout_fields( $fields ) {
$fields['shipping']['shipping_email'] = array(
'label' => __('Email', 'woocommerce'),
'placeholder' => _x('Email', 'placeholder', 'woocommerce'),
'required' => false,
'class' => array('form-row-wide'),
'clear' => true
);
return $fields;
}

/* Save Field in the DB as Order Meta Data*/

  add_action('woocommerce_checkout_update_order_meta','my_custom_checkout_field_update_order_meta');

function my_custom_checkout_field_update_order_meta($order_id) {

if (!empty($_POST['shipping']['shipping_email'])) {
update_post_meta($order_id, 'Shipping email', esc_attr($_POST['shipping']    ['shipping_email']));
}
}

/* display it in the Order details screen*/

add_action('woocommerce_admin_order_data_after_billing_address', 'my_custom_billing_fields_display_admin_order_meta', 10, 1);

function my_custom_billing_fields_display_admin_order_meta($order) {
echo '

' . __('Shipping email') . ':
' . get_post_meta($order->id, '_shipping_email', true) . '
';
}

/**Add the field to order emails **/ 
add_filter('woocommerce_email_order_meta_keys', 'my_woocommerce_email_order_meta_keys');

function my_woocommerce_email_order_meta_keys( $keys ) {
$keys[] = 'Shipping email';
return $keys;
}

需要对my_woocommerce_email_order_meta_keys函数做一点小改动,下面的代码就可以了

function my_woocommerce_email_order_meta_keys( $keys ) {
    $keys['Shipping email'] = '_shipping_email';
    return $keys;
}