2016-06-17 1 views
-1

사용자가 사이트에 등록 (사용자 이름과 이메일 입력) 한 후 구매로 이동하여 인보이스 발행 및 배송 세부 사항을 기입하면 WordPress 사용자 프로필의 필드 이름이 비어 있습니다!WooCommerce - 사용자 프로필의 이름과 성 필드 채우기 - BUG?

고객이 전에 등록하지 않았지만 구매 시간을 기록하면 사용자 프로필 필드의 이름과 성이 채워집니다.

모든 솔루션?

감사합니다.

enter image description here

답변

0

뭘 가리키는 것은 사용자 목록에서 빈 표시 이름입니다 :

는 워드 프레스 사용자 목록의 스크린 샷을 참조하십시오. 사용자 이름과 성이 존재합니다.

그리 중요하지 않지만 관리자 또는 shop_manager 사용자 역할이이 정보를 검색 목적으로 사용자 목록에 가지고있어 "표시 이름"으로 사용자를 검색하는 것이 좋습니다.

사용자가 처음 등록 할 때 시작되는 함수입니다. 그 안에, 우리가 "표시 이름"가 존재하는지 확인 :

  • "표시 이름" 함수에서, 우리 출구 존재합니다.
  • "표시 이름"이이 아닌 경우이 표시 이름을 사용자 이름과 성으로 설정 한 다음 데이터베이스에서이를 업데이트합니다.

사용 function.php에 활성 자식 테마 또는 테마의 파일을 붙여 넣기 코드 : (helgatheviking에 감사)이 스레드에서

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)); 
} 

자료를 : After woocommerce/wordpress registration

0

내 문제는 사용자 지정 woocommerce 체크 아웃 및 약간의 코딩 엉망으로 인해 사용자의 WordPress 이름을 업데이트하지 않았다 & 당시의 성 필드 새로운 주문.

위의 코드를 사용하여 시나리오를 기반으로 약간의 수정을 시도했지만 사용자가 만들어지고 순서가 정해져서 작동하지 않습니다. 따라서 그 시간까지 주문에 대한 정보는 없었습니다.

나는 다른 해결책을 후크를 시도했는데 - Updating the WooCommerce 'User Firstname Field' with 'Billing First Name' on check out하지만 그건 나에게도 효과가 없었다.

또는 process_checkout을 연결하려고 시도했지만 아무 효과가 없습니다. 라인 (24)에 <?php if (! $sent_to_admin) : ?> :

은 내가 후 라인 아래에 추가 이메일 주문 details.php의 변화 (woocommerce의 이메일 템플릿)

을하여 문제를 해결했다.

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

이유 : 나는 순서가 배치 된 후 값 변경을 원하고 메일은 주문 후 전송하기 때문에 배치되고,이

를 추가하는 것이 만들어
관련 문제