/**
* Add custom fields to WooCommerce registration form
*/
function add_custom_registration_fields() {
?>
<p class="form-row">
<label for="reg_display_name">Display Name <span class="required">*</span></label>
<input type="text" class="input-text" name="display_name" id="reg_display_name" value="<?php if (!empty($_POST['display_name'])) echo esc_attr($_POST['display_name']); ?>" required />
</p>
<?php
}
add_action('woocommerce_register_form', 'add_custom_registration_fields');
/**
* Validate custom registration fields
*/
function validate_custom_registration_fields($errors, $username, $email) {
if (empty($_POST['display_name'])) {
$errors->add('display_name_error', 'Please enter a display name');
}
return $errors;
}
add_filter('woocommerce_registration_errors', 'validate_custom_registration_fields', 10, 3);
/**
* Save custom registration fields
*/
function save_custom_registration_fields($customer_id) {
if (isset($_POST['display_name'])) {
update_user_meta($customer_id, 'display_name', sanitize_text_field($_POST['display_name']));
// Update the WP display_name field in wp_users table
wp_update_user(array(
'ID' => $customer_id,
'display_name' => sanitize_text_field($_POST['display_name'])
));
}
}
add_action('woocommerce_created_customer', 'save_custom_registration_fields');
/**
* Add display name to My Account edit details
*/
function add_display_name_to_edit_account() {
$user_id = get_current_user_id();
$display_name = get_user_meta($user_id, 'display_name', true);
?>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="display_name">Display Name <span class="required">*</span></label>
<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="display_name" id="display_name" value="<?php echo esc_attr($display_name); ?>" />
</p>
<?php
}
add_action('woocommerce_edit_account_form', 'add_display_name_to_edit_account');
/**
* Save display name in My Account edit details
*/
function save_display_name_in_edit_account($user_id) {
if (isset($_POST['display_name'])) {
update_user_meta($user_id, 'display_name', sanitize_text_field($_POST['display_name']));
// Update the WP display_name field in wp_users table
wp_update_user(array(
'ID' => $user_id,
'display_name' => sanitize_text_field($_POST['display_name'])
));
}
}
add_action('woocommerce_save_account_details', 'save_display_name_in_edit_account');