we add option to add VAT number to checkout page, it shows ok on checkout page, in admin and in emails, but it don’t save to custom fields.
Here is code:
/**
* VAT Number in WooCommerce Checkout
*/
function wpdesk_vat_field( $checkout ) {
echo '<div id="wpdesk_vat_field"><h2>' . __('Nakup na podjetje') . '</h2>';
woocommerce_form_field( 'vat_number', array(
'type' => 'text',
'class' => array( 'vat-number-field form-row-wide') ,
'label' => __( 'V kolikor nakupujete kot podjetje, vnesite ID za DDV' ),
'placeholder' => __( 'Vnesite ID za DDV' ),
), $checkout->get_value( 'vat_number' ));
echo '</div>';
}
add_action( 'woocommerce_checkout_update_order_meta', 'wpdesk_checkout_vat_number_update_order_meta' );
/**
* Save VAT Number in the order meta
*/
function wpdesk_checkout_vat_number_update_order_meta( $order_id ) {
if ( ! empty( $_POST['vat_number'] ) ) {
update_post_meta( $order_id, '_vat_number', sanitize_text_field( $_POST['vat_number'] ) );
}
}
add_action( 'woocommerce_admin_order_data_after_billing_address', 'wpdesk_vat_number_display_admin_order_meta', 10, 1 );
/**
* Display VAT Number in order edit screen
*/
function wpdesk_vat_number_display_admin_order_meta( $order ) {
echo '<p><strong>' . __( 'ID za DDV', 'woocommerce' ) . ':</strong> ' . get_post_meta( $order->id, '_vat_number', true ) . '</p>';
}
add_filter( 'woocommerce_email_order_meta_keys', 'wpdesk_vat_number_display_email' );
/**
* VAT Number in emails
*/
function wpdesk_vat_number_display_email( $keys ) {
$keys['ID za DDV'] = '_vat_number';
return $keys;
}
2
Answers
I add this code to functions.php, but VAT number is not saved to custom fields on order page.
I am using your code in addition I used the
woocommerce_before_order_notes
hook to add files and working fine for me.Tested and works.
Checkout
Edit Order
Mail