-
-
Save mikejolley/2263203 to your computer and use it in GitHub Desktop.
/** | |
* 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; | |
} |
I confirm the snippet works, but you have to use the field slug, not the label or the name.
Thanks to everyone for helping with this addition. Question I have, how do I add more than one custom field?
Found my own answer after doing a web search. Found the necessary info here: http://bit.ly/H0VPP4
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;
}
The code is not works for WC 2.1.12
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;
}
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;
}
woocommerce_email_customer_details_fields doesn't work. I understand that woocommerce_email_order_meta_keys is depreciated, but it works...
Hi guys,
How can I implement this code to send the custom field in the "Admin New Order Email"?
@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;
}
@seozones and @fabio-farolfi make sure you are using the name and not the label as the key in the above code.
For example if I have a checkout field named my_example with label of "My Example" then for the fields to show in the admin emails the code would look like this:
That is how I got it to work for me ;) Cheers!