WooCommerce – заполнение полей имени и фамилии в профиле пользователя – ошибка?

Если пользователь регистрируется на сайте (введите имя пользователя и адрес электронной почты), а THEN отправляется на покупку, заполняя детали выставления счетов и доставки, имя поля в профиле пользователя WordPress пуст!

Если клиент не регистрируется раньше, но записывает время покупки, тогда заполняются имя и фамилия полей профиля пользователя.

Любое решение?

Благодарю.

Смотрите этот скриншот списка пользователей WordPress:

введите описание изображения здесь

То, что вы указываете, – это пустое отображаемое имя в списке пользователей. Имя пользователя и фамилия пользователя существуют.

Так что это не очень важно, но, конечно, полезно, чтобы пользовательские роли администратора или shop_manager имели эту информацию в списке пользователей для поиска, извлекая пользователя с помощью этого «отображаемого имени» .

Вот функция, которая запускается, когда пользователь регистрируется в первый раз. В нем мы проверяем, существует ли это «отображаемое имя» :

  • Если «отображаемое имя» существует, мы выходим из функции.
  • Если «отображаемое имя» не существует, мы устанавливаем это отображаемое имя от имени пользователя и фамилии пользователя, а затем обновляем его в базе данных.

Используйте этот код, вставляя его в файл function.php вашей активной дочерней темы или темы:

add_action( 'user_register', 'wc_new_user_display_name_update', 10, 1 ); function wc_new_user_display_name_update( $user_id ) { // Check if user display name exist. // If yes, we stop the process getting out of this function. if ( !empty( get_the_author_meta( 'display_name', $user_id ) ) { exit; } $user_info = get_user_meta( $user_id ); if ( !empty($user_info->first_name ) ) { $user_first_name = $user_info->first_name; } else { $user_first_name = $user_info->billing_first_name; } if ( !empty( $user_info->last_name ) ) { $user_last_name = $user_info->last_name; } else { $user_last_name = $user_info->billing_last_name; } // setting up user display name $display_name = $user_first_name . ' ' . $user_last_name; // setting up user display name wp_update_user( array( 'ID' => $user_id, 'display_name' => $display_name ) ); } 

Основы на этой теме (спасибо helgatheviking ) : После регистрации woocommerce / wordpress

Моя проблема заключалась в том, что из-за пользовательской проверки woocommerce и небольшого испорченного кодирования он не обновлял поля имени и фамилии WordPress пользователя во время размещения нового заказа.

Я попробовал приведенный выше код с небольшими ухищрениями, основанными на моем сценарии, но это не сработало для меня по мере создания пользователя, а затем был размещен заказ, поэтому до этого времени не было информации о заказе.

Я попытался подключить другие решения, подобные этому, – обновив поле «Имя пользователя» WooCommerce «с именем« Billing First Name », но это не сработало для меня.

или попытался подключить process_checkout, но ничего не получилось.

Я решил проблему, внеся изменения в email-order-details.php (шаблон электронной почты woocommerce)

Я добавил строку ниже: <?php if ( ! $sent_to_admin ) : ?> строке 24.

 <?php wp_update_user( array( 'ID' => (int)$order->user_id, 'first_name' => $order->billing_first_name, 'last_name' => $order->billing_last_name) ); ?> 

Причина: я хотел изменить значения после размещения заказа и после отправки электронной почты после размещения заказа было бы целесообразно добавить это