워드프레스 회원가입 시 사용자가 회원등급을 선택할 수 있도록 허용하기

Last Updated: 2024년 02월 02일 | | 2개 댓글

워드프레스에서 사용자가 회원가입을 할 때 개인회원/기업회원 혹은 학생/교수/교직원/일반인처럼 회원 등급(역할)을 선택할 수 있도록 하고 싶은 경우가 있습니다. 이 경우 인기 멤버십 플러그인인 Ultimate Member(얼티밋 멤버)에서 제공하는 기능을 사용하거나 WP Roles at Registration이라는 무료 플러그인을 사용할 수 있습니다

[ 이 글은 최신 정보를 바탕으로 내용을 수정하여 다시 발행되었습니다. ]

Ultimate Member 플러그인 사용하기

Ultimate Member(얼티밋 멤버)와 같은 회원제 플러그인을 사용하면 회원 유형을 선택할 수 있는 드롭다운 메뉴나 라디오 선택 필드를 추가할 수 있습니다.

역할 필드에는 보안을 위해 UM 커스텀 역할만 가능합니다.

For security reasons the role fields are limited to UM custom roles only. Go to Ultimate Member->User Roles, inside your dashboard & check if the roles you are mentioning UM custom role or not. If not, they won’t show up. You can recreate those roles as UM custom roles from there and then Delete the role field from your UM form and re-add again which should automatically show up the newly created roles

출처: https://wordpress.org/support/topic/ultimate-member-user-role-select-does-not-work/

UM 사용자 정의 역할(회원 등급)이 없는 경우, 얼티밋 멤버 » 사용자 역할로 이동하여 새로 추가하여 UM 커스텀 역할을 추가하도록 합니다.

워드프레스 회원가입 시 사용자가 회원등급을 선택할 수 있도록 허용하기 2

이제 Ultimate Member의 회원가입 양식에서 "역할 (Radio)" 또는 "역할 (드롭 다운)" 필드를 삽입할 수 있습니다. (두 필드는 동일한 기능을 하는 같습니다. 하나는 라디오 필드 형식으로 표시되고 하나는 드롭다운 메뉴에서 역할을 선택할 수 있습니다.)

얼티밋 멤버 역할 선택 추가

위와 같이 설정하면 다음과 같이 표시됩니다.

Ultimate Member 플러그인 회원 유형 선택 관련 썸네일

한글 번역이 어색한 부분이 있네요. 그런 부분은 Loco Translate 플러그인이나 Poedit 프로그램을 사용하여 수정하시기 바랍니다.

가입자가 회원 등급을 선택할 수 있도록 허용하는 WP Roles at Registration

워드프레스 WP Roles at Registration 플러그인

이 플러그인은 오래 전에 워드프레스 저장소에서 제거되었습니다. 이 방법 대신 상기의 "Ultimate Member 플러그인 사용하기" 섹션에서 설명하는 방법을 이용하시기 바랍니다.

이 플러그인을 이용하면 사용자가 회원가입 과정에서 선택된 역할(회원 등급) 중에서 하나를 선택할 수 있습니다. 이 플러그인은 BuddyPress에서도 잘 작동합니다. 관리자는 관리자 페이지에서 사용자들이 선택할 수 있는 회원등급을 지정할 수 있습니다.

WP Roles at Registration을 설치하면 설정 > WP Roles at Registration 메뉴가 추가됩니다. WP Roles at Registration 설정 페이지를 클릭하면 다음과 같이 사용자에게 표시할 회원 등급을 선택할 수 있습니다.

회원등급 설정하기

Choose Roles(역할 선택)에서 회원가입(등록) 폼에서 선택할 수 있는 회원등급을 선택합니다. Role Label(역할 레이블)에서는 필드명을 지정합니다(예: 회원 유형).

그러면 다음과 같이 회원가입 폼에 회원등급을 선택할 수 있는 필드가 추가됩니다.

워드프레스 회원가입

기본 회원등급 이름이 영문으로 표시됩니다. 플러그인의 언어 파일을 번역하여 회원등급 이름을 한글로 바꿀 수 있을 것 같습니다.

새로운 회원등급 추가하기

워드프레스에서 제공하는 기본 회원등급 외에 추가로 회원등급(예: 개인회원, 기업회원)을 추가하고 싶은 경우에는 User Role Editor 플러그인(무료)을 사용할 수 있습니다. 사용 방법은 다음 방법을 참고해보세요.

예를 들어, 다음과 같이 '구독자' 회원등급을 그대로 복제하여 새로운 회원등급을 만들 수 있습니다.

새로운 회원등급 만들기

기본 회원등급 설정하기

다음으로 할 일은 가입자가 가입할 때 기본적으로 할당되는 회원등급을 지정하는 것입니다. 기본적으로 "구독자"가 기본 회원등급으로 지정되어 있습니다.

사용자가 회원가입할 때 사용자에게 기본적으로 부여되는 회원등급(역할)을 변경하려면 설정 > 일반으로 이동하여 새 사용자를 위한 기본 규칙에서 원하는 회원 유형을 선택합니다.

워드프레스 기본 회원등급 설정

물론 바로 위의 "멤버쉽" 옵션을 "누구나 가입할 수 있습니다"로 지정해야 사용자들이 회원 가입을 할 수 있습니다. 사용자들이 회원 가입을 굳이 할 필요가 없다면 이 옵션은 체크하지 않도록 합니다.

이제 설정 > WP Roles at Registration 페이지로 이동하여 사용자들이 선택할 수 있는 회원등급 유형을 선택합니다.

회원 유형 선택하기

설정을 저장한 후에 회원가입 폼을 확인해보면 여기에서 지정한 회원 유형을 선택할 수 있도록 표시됩니다.

회원가입 시 회원등급 선택하기

테스트를 해 보니 원하는 대로 잘 작동하네요. 회원 가입 과정에서 가입자의 회원등급이나 유형을 구분할 필요가 있는 경우에 이 플러그인을 사용할 수 있습니다.

다른 방법 - 커스텀 코드

플러그인 사용이 꺼려지는 경우 다음 코드를 활용해볼 수 있습니다.

//1. Add a new form element... 새 폼 요소 추가하기
add_action( 'register_form', 'myplugin_register_form' );
function myplugin_register_form() {

global $wp_roles;

echo '<select name="role" class="input">';
foreach ( $wp_roles->roles as $key=>$value ) {
// Exclude default roles such as administrator etc. Add your own
if ( ! in_array( $value['name'], [ 'Administrator', 'Contributor', ] ) {
echo '<option value="'.$key.'">'.$value['name'].'</option>';
}
}
echo '</select>';
}

//2. Add validation. 유효성 검사 추가하기
add_filter( 'registration_errors', 'myplugin_registration_errors', 10, 3 );
function myplugin_registration_errors( $errors, $sanitized_user_login, $user_email ) {

if ( empty( $_POST['role'] ) || ! empty( $_POST['role'] ) && trim( $_POST['role'] ) == '' ) {
$errors->add( 'role_error', __( '<strong>ERROR</strong>: You must include a role.', 'mydomain' ) );
}

return $errors;
}

//3. Finally, save our extra registration user meta. 추가 등록 사용자 메타 저장하기
add_action( 'user_register', 'myplugin_user_register' );
function myplugin_user_register( $user_id ) {

$user_id = wp_update_user( array( 'ID' => $user_id, 'role' => $_POST['role'] ) );
}
// 출처: https://wordpress.stackexchange.com/questions/195603/how-to-add-users-roles-dropdown-in-registration-in-wordpress

실제로 작동하는지는 테스트해보지 않았습니다. 제대로 작동하지 않는다는 댓글도 있네요. 제대로 작동하지 않을 경우 상기 코드와 다음 워드프레스 공식 문서를 참고하여 제대로 된 코드를 만들 수 있을 것 같습니다.

  • https://codex.wordpress.org/Customizing_the_Registration_Form
  • https://codex.wordpress.org/Function_Reference/wp_update_user

마치며

이상으로 워드프레스에서 회원가입 시 사용자가 회원등급을 선택할 수 있도록 하는 방법에 대해 살펴보았습니다. 보다 정교하게 회원제 사이트를 운영하고 싶은 경우 Ultimate Member나 WP-Members 같은 멤버십 플러그인을 사용할 수 있습니다.

참고로 ProfilePress라는 사용자 & 프로필 플러그인도 있네요. 이 플러그인은 비용이 제법 비싼 편이지만 이 글에서 언급한 기능 외에 다양한 기능을 제공하는 것 같습니다(https://profilepress.net/how-to-allow-user-role-selection-at-wordpress-registration/ 참고).

하지만 이런 플러그인은 보안 문제가 있을 수 있으므로 항상 최신 버전으로 업데이트하는 것이 좋습니다. 실제로 최근에 Ultimate Member 플러그인의 보안 취약점 때문에 업데이트를 소홀히 한 많은 사이트가 멀웨어에 감염되는 사례가 발생했습니다.

위에서 언급했듯이 굳이 회원 가입을 받을 필요가 없다면 회원가입 기능을 비활성화하는 것이 좋을 듯 합니다.

참고


2 개 댓글

Leave a Comment