워드프레스 회원가입 폼에 닉네임 필드 추가하기 (functions.php 코드 예제 포함)

워드프레스의 기본 회원가입 기능은 사용자명(Username)과 이메일 중심으로 구성되어 있습니다. 하지만 커뮤니티, 블로그, 쇼핑몰, 멤버십 사이트처럼 회원 간 활동이 중요한 사이트라면 회원가입 단계에서 닉네임을 함께 받는 것이 훨씬 자연스러운 사용자 경험을 제공합니다.

이 글에서는 별도의 회원관리 플러그인 없이 functions.php 또는 플러그인에 간단한 코드를 추가하여 회원가입 폼에 닉네임 입력란을 만들고, 입력된 값을 저장한 뒤 Display Name(표시 이름)​까지 자동으로 변경하는 방법을 소개합니다.


왜 회원가입 시 닉네임을 받는 것이 좋을까?

워드프레스는 기본적으로 표시 이름(Display Name)을 별도로 관리합니다. 이를 설정하지 않으면 다음과 같은 문제가 생길 수 있습니다.

  • 사용자명이 그대로 공개될 수 있다.
  • 댓글이나 작성자 정보에 로그인 ID가 노출될 수 있다.
  • 회원들이 원하는 이름으로 활동하기 어렵다.

특히 커뮤니티나 게시판에서는 로그인 ID 대신 닉네임을 사용하는 것이 일반적입니다. 회원가입 단계에서 닉네임을 함께 입력받으면 가입 직후부터 일관된 사용자 경험을 제공할 수 있습니다.


구현 방식

이번 방법은 크게 세 가지 작업으로 구성됩니다.

  1. 회원가입 폼에 닉네임 입력란 추가
  2. 닉네임 입력 여부 검증
  3. 회원 생성 시 닉네임 저장 및 표시 이름(Display Name) 변경

별도의 데이터베이스 수정은 필요하지 않습니다. 워드프레스가 제공하는 사용자 메타(User Meta)를 활용하므로 기존 구조를 그대로 유지할 수 있습니다.


1. 회원가입 폼에 닉네임 입력란 추가

먼저 회원가입 화면에 닉네임 입력 필드를 출력합니다.

function kh_register_form()
{
?>
<p>
    <label for="nickname">
        닉네임<br>
        <input type="text"
               name="nickname"
               id="nickname"
               class="input"
               value="<?php echo isset($_POST['nickname']) ? esc_attr($_POST['nickname']) : ''; ?>">
    </label>
</p>
<?php
}
add_action('register_form', 'kh_register_form');

코드 설명

register_form 액션은 기본 회원가입 폼이 출력될 때 실행됩니다.

여기에 <input> 요소를 추가하면 기본 입력 항목 아래에 새로운 닉네임 필드가 생성됩니다.

또한 가입 과정에서 오류가 발생해 페이지가 다시 출력되더라도 사용자가 입력했던 닉네임이 유지되도록 값을 다시 출력하고 있습니다.


2. 닉네임을 필수 입력값으로 검증하기

입력란만 추가하면 사용자가 빈 값으로 가입할 수도 있습니다.

이를 방지하기 위해 registration_errors 필터를 이용해 검증을 수행합니다.

function kh_registration_errors($errors, $sanitized_user_login, $user_email)
{
    if (empty($_POST['nickname'])) {
        $errors->add(
            'nickname_error',
            __('<strong>오류</strong>: 닉네임을 입력해주세요.')
        );
    }

    return $errors;
}

add_filter('registration_errors', 'kh_registration_errors', 10, 3);

동작 원리

회원가입 요청이 들어오면 워드프레스는 가입 정보를 검증합니다.

이 과정에서 닉네임이 비어 있다면 오류를 추가하고 회원가입을 중단합니다.

따라서 사용자는 닉네임을 반드시 입력해야 가입을 완료할 수 있습니다.


3. 회원 생성 후 닉네임 저장하기

회원가입이 성공하면 user_register 액션이 실행됩니다.

이 시점에서 닉네임을 사용자 메타에 저장하고 표시 이름도 함께 변경합니다.

function kh_wp_register($user_id)
{
    if (!empty($_POST['nickname'])) {

        update_user_meta(
            $user_id,
            'nickname',
            sanitize_text_field($_POST['nickname'])
        );

        wp_update_user(array(
            'ID' => $user_id,
            'display_name' => sanitize_text_field($_POST['nickname'])
        ));
    }
}

add_action('user_register', 'kh_wp_register');

저장되는 정보

위 코드는 두 가지 작업을 수행합니다.

  • nickname 사용자 메타 저장
  • display_name을 동일한 값으로 변경

이렇게 하면 댓글, 작성자 정보, 프로필 등에서 로그인 ID 대신 닉네임이 표시됩니다.


원본 코드에서 함께 개선하면 좋은 부분

원본 예제는 정상적으로 동작하는 구조이지만, 최신 워드프레스 개발 방식에서는 몇 가지 보완을 권장합니다.

항목권장 사항
입력값 출력esc_attr()로 이스케이프 처리
저장 전sanitize_text_field()로 문자열 정리
PHP 태그<? 대신 <?php 사용
보안$_POST 값은 항상 검증 후 저장

이러한 처리를 추가하면 예상하지 못한 입력값이나 특수문자로 인한 문제를 예방할 수 있습니다.


functions.php와 플러그인, 어디에 추가해야 할까?

코드는 두 가지 위치 중 하나에 추가할 수 있습니다.

테마의 functions.php

장점

  • 가장 간단하게 적용 가능
  • 테스트하기 편리

단점

  • 테마를 변경하면 코드가 함께 사라질 수 있다.

사이트 전용 플러그인

장점

  • 테마 변경과 관계없이 계속 유지된다.
  • 기능 관리가 쉽다.
  • 유지보수에 유리하다.

장기간 운영하는 사이트라면 플러그인으로 관리하는 방법이 더 적합하다.


적용 시 확인해야 할 사항

회원가입 폼을 직접 수정하는 플러그인(예: 회원관리 플러그인)을 사용하고 있다면 register_form 훅이 실행되지 않을 수 있습니다.

또한 회원가입 기능을 비활성화한 사이트에서는 이 코드만 추가해도 회원가입 화면이 생성되지는 않습니다.

적용 후에는 다음 항목을 반드시 테스트하는 것이 좋습니다.

  • 닉네임 입력 여부
  • 닉네임 미입력 시 오류 출력
  • 회원 생성 후 프로필에 닉네임 저장 여부
  • Display Name이 닉네임으로 변경되는지 확인
  • 댓글이나 작성자 표시에도 정상 적용되는지 확인

마무리

회원가입 단계에서 닉네임을 입력받도록 구성하면 사용자명이 외부에 노출되는 상황을 줄일 수 있고, 가입 직후부터 원하는 이름으로 활동할 수 있습니다.

이번 방법은 워드프레스가 기본으로 제공하는 액션과 필터를 활용하기 때문에 구현이 단순하면서도 확장성이 높습니다. 향후에는 동일한 방식으로 전화번호, 추천인, 회사명, 마케팅 동의 여부 등 추가 회원 정보를 함께 수집하는 기능으로도 쉽게 확장할 수 있습니다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다