-
-
Save pietromalerba/5c8e8650152b9e58ccb7 to your computer and use it in GitHub Desktop.
Add custom fields to Woocommerce My Account
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Add VAT and SSN fields in billing address display | |
add_filter( 'woocommerce_order_formatted_billing_address', 'custom_add_vat_ssn_formatted_billing_address', 10, 2 ); | |
function custom_add_vat_ssn_formatted_billing_address( $fields, $order ) { | |
$fields['vat'] = $order->billing_vat; | |
$fields['ssn'] = $order->billing_ssn; | |
return $fields; | |
} | |
add_filter( 'woocommerce_my_account_my_address_formatted_address', 'custom_my_account_my_address_formatted_address', 10, 3 ); | |
function custom_my_account_my_address_formatted_address( $fields, $customer_id, $type ) { | |
if ( $type == 'billing' ) { | |
$fields['vat'] = get_user_meta( $customer_id, 'billing_vat', true ); | |
$fields['ssn'] = get_user_meta( $customer_id, 'billing_ssn', true ); | |
} | |
return $fields; | |
} | |
add_filter( 'woocommerce_address_to_edit', 'custom_address_to_edit' ); | |
function custom_address_to_edit( $address ) { | |
global $wp_query; | |
if ( isset( $wp_query->query_vars['edit-address'] ) && $wp_query->query_vars['edit-address'] != 'billing' ) { | |
return $address; | |
} | |
if ( ! isset( $address['billing_vat'] ) ) { | |
$address['billing_vat'] = array( | |
'label' => __( 'VAT', 'your-domain' ), | |
'placeholder' => _x( 'VAT', 'placeholder', 'your-domain' ), | |
'required' => true, //change to false if you do not need this field to be required | |
'class' => array( 'form-row-first' ), | |
'value' => get_user_meta( get_current_user_id(), 'billing_vat', true ) | |
); | |
} | |
if ( ! isset( $address['billing_ssn'] ) ) { | |
$address['billing_ssn'] = array( | |
'label' => __( 'SSN', 'your-domain' ), | |
'placeholder' => _x( 'SSN', 'placeholder', 'your-domain' ), | |
'required' => true, //change to false if you do not need this field to be required | |
'class' => array( 'form-row-first' ), | |
'value' => get_user_meta( get_current_user_id(), 'billing_ssn', true ) | |
); | |
} | |
return $address; | |
} | |
add_filter( 'woocommerce_formatted_address_replacements', 'custom_formatted_address_replacements', 10, 2 ); | |
function custom_formatted_address_replacements( $address, $args ) { | |
$address['{vat}'] = ''; | |
$address['{ssn}'] = ''; | |
if ( ! empty( $args['vat'] ) ) { | |
$address['{vat}'] = __( 'VAT', 'your-domain' ) . ' ' . $args['vat']; | |
} | |
if ( ! empty( $args['ssn'] ) ) { | |
$address['{ssn}'] = __( 'SSN', 'your-domain' ) . ' ' . strtoupper( $args['ssn'] ); | |
} | |
return $address; | |
} | |
add_filter( 'woocommerce_localisation_address_formats', 'custom_localisation_address_format' ); | |
function custom_localisation_address_format( $formats ) { | |
$formats['IT'] .= "\n\n{vat}\n{ssn}"; | |
return $formats; | |
} | |
add_filter( 'woocommerce_admin_billing_fields', 'custom_admin_billing_fields' ); | |
function custom_admin_billing_fields( $fields ) { | |
$fields['vat'] = array( | |
'label' => __( 'VAT', 'your-domain' ), | |
'show' => true | |
); | |
$fields['ssn'] = array( | |
'label' => __( 'SSN', 'your-domain' ), | |
'show' => true | |
); | |
return $fields; | |
} | |
add_filter( 'woocommerce_found_customer_details', 'custom_found_customer_details' ); | |
function custom_found_customer_details( $customer_data ) { | |
$customer_data['billing_vat'] = get_user_meta( $_POST['user_id'], 'billing_vat', true ); | |
$customer_data['billing_ssn'] = get_user_meta( $_POST['user_id'], 'billing_ssn', true ); | |
return $customer_data; | |
} | |
add_filter( 'woocommerce_customer_meta_fields', 'custom_customer_meta_fields' ); | |
function custom_customer_meta_fields( $fields ) { | |
$fields['billing']['fields']['billing_vat'] = array( | |
'label' => __( 'VAT', 'your-domain' ) | |
); | |
$fields['billing']['fields']['billing_ssn'] = array( | |
'label' => __( 'SSN', 'your-domain' ) | |
); | |
return $fields; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment