워드프레스에서 기존의 모든 사용자의 표시 이름(공개적으로 표시할 이름)을 변경하고 싶은 경우가 있습니다. 이와 관련하여 검색해보면 user_register 후크(액션)를 사용하여 변경하는 방법이 많이 소개되고 있지만, 테스트해보니 잘 작동하지 않았습니다.
워드프레스에서 모든 사용자의 '공개적으로 표시할 이름'을 변경하기
대신 WordPress Change Default Display Name Publicy As First Name Last Name for all existing users에서 소개하는 코드를 사용하니 원하는 대로 각 사용자의 '표시 이름'이 일괄적으로 변경되었습니다.
// Change default display name publicly as to Last Name and First Name for all users add_action ('admin_head','make_display_name_f_name_last_name'); function make_display_name_f_name_last_name(){ $users = get_users(array('fields'=>'all')); foreach($users as $user){ $user = get_userdata($user->ID); $display_name = $user->last_name; . $user->first_name; if($display_name!=' ') wp_update_user( array ('ID' => $user->ID, 'display_name' => $display_name) ); else wp_update_user( array ('ID' => $user->ID, 'display_name' => $user->display_login) ); if($user->display_name == '') wp_update_user( array ('ID' => $user->ID, 'display_name' => $user->display_login) ); } }
위의 코드를 적용하면 사용자의 표시 이름이 "홍길동"처럼 "성+이름"이 표시됩니다.
원하는 경우 표시 이름을 이메일 주소로 변경하는 것도 가능합니다. 하지만 이메일 주소를 그대로 노출할 경우 개인 프라이버시 문제가 발생할 수 있고 스패머의 표적이 될 수 있기 때문에 이메일의 일부 필드를 별표로 블라인드 처리하여 표시할 수 있습니다. (예: [email protected] 대신 honggild***@***er.com으로 표시)
이 경우 다음과 같은 코드를 사용 중인 테마의 함수 파일에 추가하면 공개적으로 표시할 이름이 "honggild***@***er.com"과 같은 형식으로 표시됩니다.
// Sets the user's display name (always) to email address with some characters are hidden with asterisks, when it's available: add_action ('admin_head','make_display_name_email_address'); function make_display_name_email_address(){ $users = get_users(array('fields'=>'all')); foreach($users as $user){ $user = get_userdata($user->ID); $em = $user->user_email; $mail_segments = explode("@", $em); $mail_segments[0] = substr($mail_segments[0], 0, -3) . "***"; $mail_segments[1] = "***" . substr($mail_segments[1], 3); $new_email = implode("@", $mail_segments); $display_name = $new_email; if($display_name!=' ') wp_update_user( array ('ID' => $user->ID, 'display_name' => $display_name) ); else wp_update_user( array ('ID' => $user->ID, 'display_name' => $user->display_login) ); if($user->display_name == '') wp_update_user( array ('ID' => $user->ID, 'display_name' => $user->display_login) ); } }
이메일 주소는 필수이므로 위의 코드에서 아래의 조건문은 불필요할 것 같습니다.
위의 코드를 추가하여 테스트해보면 워드프레스 알림판 > 사용자 > 나의 프로필에서 "공개적으로 표시할 이름"이 "honggild***@***er.com"처럼 일부 글자가 별표로 처리된 이메일 주소로 바뀌어 표시됩니다.

그리고 글 작성자의 이름도 아래 그림과 같이 이메일 주소로 표시됩니다.

참고:
- 관리자의 사용자 이름(아이디)을 변경하여 보안 강화하기
- 워드프레스에서 회원 가입 시 사용자 아이디/이메일 제한하기
- get_user_meta() doesn't include user email? (get_user_meta()에는 사용자 이메일이 포함되지 않나요?)
- Replace username part in email addresses into asterisks (정규식을 사용하여 이메일의 일부 글자를 별표로 바꾸는 방법)
- Replacing characters in email address with * (이메일 주소의 일부 글자를 별표로 변경하는 방법)
- Hide email address in PHP with asterisk (*) - PHP에서 별표로 이메일의 일부를 숨기는 방법
댓글 남기기