/** * Add the field to the checkout **/ add_action('woocommerce_after_order_notes', 'my_custom_checkout_field'); function my_custom_checkout_field( $checkout ) { echo '

'.__('My Field').'

'; /** * Output the field. This is for 1.4. * * To make it compatible with 1.3 use $checkout->checkout_form_field instead: $checkout->checkout_form_field( 'my_field_name', array( 'type' => 'text', 'class' => array('my-field-class orm-row-wide'), 'label' => __('Fill in this field'), 'placeholder' => __('Enter a number'), )); **/ woocommerce_form_field( 'my_field_name', array( 'type' => 'text', 'class' => array('my-field-class orm-row-wide'), 'label' => __('Fill in this field'), 'placeholder' => __('Enter a number'), ), $checkout->get_value( 'my_field_name' )); echo '
'; /** * Optional Javascript to limit the field to a country. This one shows for italy only. **/ ?> add_error( __('Please enter your XXX.') ); } /** * Update the user meta with field value **/ add_action('woocommerce_checkout_update_user_meta', 'my_custom_checkout_field_update_user_meta'); function my_custom_checkout_field_update_user_meta( $user_id ) { if ($user_id && $_POST['my_field_name']) update_user_meta( $user_id, 'my_field_name', esc_attr($_POST['my_field_name']) ); } /** * Update the order meta with field value **/ 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 ($_POST['my_field_name']) update_post_meta( $order_id, 'My Field', esc_attr($_POST['my_field_name'])); } /** * Add the field to order emails **/ add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys'); function my_custom_checkout_field_order_meta_keys( $keys ) { $keys[] = 'My Field'; return $keys; }