Skip to content

Instantly share code, notes, and snippets.

@mikejolley
Last active June 1, 2019 17:50
Show Gist options
  • Save mikejolley/2263203 to your computer and use it in GitHub Desktop.
Save mikejolley/2263203 to your computer and use it in GitHub Desktop.
WooCommerce - Add custom field (in an order) to the order emails
/**
* 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['How did you hear about us?'] = 'hear_about_us';
return $keys;
}
@woods950
Copy link

Found my own answer after doing a web search. Found the necessary info here: http://bit.ly/H0VPP4

@sfplanet
Copy link

Does still work for woocoommerce 2.1.6? I can't seem to get it working. Here's my code

//display custom fields backend product creation
add_action('woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields');

function woo_add_custom_general_fields() {
global $woocommerce, $post;
echo '

';
woocommerce_wp_text_input(
array(
'id' => 'amazon_code',
'label' => __('Amazon Coupon Code', 'woocommerce'),
'placeholder' => 'Enter Coupon Code',
'desc_tip' => 'true',
'description' => __('Enter Amazon Coupon Code', 'woocommerce')
)
);

echo '</div>';

}
//save fields from product backend creation
add_action('woocommerce_process_product_meta', 'woo_add_custom_general_fields_save');
function woo_add_custom_general_fields_save($post_id) {
$woocommerce_text_field = $_POST['amazon_code'];
if(!empty($woocommerce_text_field))
update_post_meta($post_id, 'amazon_code', esc_attr($woocommerce_text_field));

}

//add custom amazon coupon code to email
add_filter('woocommerce_email_order_meta_keys', 'my_woocommerce_email_order_meta_keys');
function my_woocommerce_email_order_meta_keys($keys) {
$keys[] = 'amazon_code';
return $keys;
}

@devworkz-zz
Copy link

The code is not works for WC 2.1.12

@studio-fs
Copy link

woocommerce_email_order_meta_keys - not properly!!!
woocommerce_email_customer_details_fields - properly!
//
add_filter('woocommerce_email_customer_details_fields', 'my_woocommerce_email_order_meta_keys', 10, 1);
function my_woocommerce_email_order_meta_keys($keys) {
$keys[] = 'you're text';
return $keys;
}

@VegaMaxine
Copy link

Can anyone see a problem with this? Any assistance much appreciated!

add_filter('woocommerce_email_order_meta_fields', 'custom_woocommerce_email_order_meta_fields', 10, 3 );
function custom_woocommerce_email_order_meta_fields( $fields, $sent_to_admin, $order ) {
$fields['delivery_date'] = array(
'label' => __( 'Pre-order' ),
'value' => get_post_meta( $order->id, 'delivery_date', true ),
);
$fields['message'] = array(
'label' => __( 'Message' ),
'value' => get_post_meta( $order->id, 'message', true ),
);
$fields['shipping_email'] = array(
'label' => __( 'Recipient Email' ),
'value' => get_post_meta( $order->id, 'shipping_email', true ),
);
$fields['delivery_instructions'] = array(
'label' => __( 'Special Delivery Instructions' ),
'value' => get_post_meta( $order->id, 'delivery_instructions', true ),
);
return $fields;
}

@jarodthornton
Copy link

woocommerce_email_customer_details_fields doesn't work. I understand that woocommerce_email_order_meta_keys is depreciated, but it works...

@dimbert82
Copy link

Hi guys,

How can I implement this code to send the custom field in the "Admin New Order Email"?

@o-nkar
Copy link

o-nkar commented Jul 4, 2018

@dimbert82
insert the code in your active theme or child theme functions.php

code like this:

add_filter( 'woocommerce_email_order_meta_fields', 'custom_order_mail_fields_callback', 10, 3 );
function custom_order_mail_fields_callback( $fields, $sent_to_admin, $order ) {    
        $fields['yourdata'] = array(
            'label' => __( 'yourdata to display' ),
            'value' => ' yourdata value',
        );
    }
    return $fields;
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment