워드프레스 회원 가입 시 사용자 아이디 / 이메일 제한하기

Last Updated: 2023년 07월 16일 | | 댓글 남기기

워드프레스 사이트에서 회원 가입할 때 아이디(사용자 이름)에 특정 단어를 사용하지 못하도록 제한하고 싶은 경우가 있을 수 있습니다.

이러한 기능을 제공하는 워드프레스 플러그인으로 Restrict User Registration이 있지만, 업데이트가 안 된지 3년이 넘었기 때문에 가급적 사용하지 않는 것이 바람직한 것 같습니다.

회원 가입 시 사용자 이름에 특정 단어가 포함되면 오류 표시하기

다른 방법으로 일반 사이트(싱글 사이트)의 경우 다음 코드를 사용 중인 테마의 함수 파일에 추가할 수 있습니다.

add_filter( 'registration_errors', function( $errors, $name )
{
if ( user_name_is_forbidden( $name ) )
$errors->add('user_name', __( '허용되지 않는 사용자 이름입니다.' ) );
return $errors;
}, 10, 2);

function user_name_is_forbidden( $name )
{
// If you need the character '~', write it as '\~'.
$forbidden = array(
'admin.*',
'facebook.*',
'wordpress.*'
);

return (bool) preg_match( '~' . join( '|', $forbidden ) . '~i', $name );
}
// 출처: Filter username field on registration for profanity and unwanted words (회원 가입 시 사용자 이름 필드에 원친 않는 단어를 사용하지 못하도록 필터링하기)

마찬가지로 위의 코드는 차일드 테마 내의 함수 파일(functions.php)에 추가해야 추후 테마가 업데이트되더라도 변경 사항이 사라지지 않습니다.

위의 코드를 추가한 경우, admin, facebook, wordpress 단어가 사용자 이름에 포함되면 경고 메시지를 출력하면서 가입이 되지 않습니다.

워드프레스 회원 가입 시 사용자 이름 제한하기

참고로 관리자 아이디로 admin, administrator 등을 사용하는 것은 보안상 위험할 수 있습니다. 관리자 아이디가 admin이나 administrator인 경우 다음 글을 참고로 관리자 아이디를 변경하는 것이 좋습니다.

멀티사이트의 경우 다음 코드를 사용할 수 있습니다.

add_filter( 'wpmu_validate_user_signup', function( $result )
{
// there is already an error
if ( $result['errors']->get_error_message('user_name') )
return $result;

if ( user_name_is_forbidden( $result['user_name'] ) )
$result['errors']->add('user_name', __( '허용되지 않는 사용자 이름입니다.' ) );

return $result;
});

function user_name_is_forbidden( $name )
{
// 상기와 동일
);

멀티사이트에서는 잘 작동하는지 확인해보지 않았습니다.

워드프레스 회원 가입 시 특정 이메일 도메인이 포함되면 오류 표시하기

회원 가입 시 이메일 필드에 특정 도메인이 포함되면 회원으로 가입하지 못하도록 제한하고 싶은 경우가 있을 수 있습니다. 이 경우 다음 코드를 사용할 수 있습니다.

function disable_email_domain ( $errors, $sanitized_user_login, $user_email ) {
list( $email_user, $email_domain ) = explode( '@', $user_email );
$forbidden_emails = array("hotmail.com", "example.com");
if (in_array($email_domain, $forbidden_emails)) {
$errors->add( 'email_error', __( '<strong>오류</strong>: 허용되지 않은 도메인입니다.', 'my_domain' ) );
}
return $errors;
}
add_filter( 'registration_errors', 'disable_email_domain', 10, 3 );

위의 코드는 Disallow registrations from specific email domains(특정 이메일 도메인의 회원 가입 허용하지 않기) 글을 참고하여 조금 변형한 것입니다.

이메일 도메인으로 회원 가입 제한하기

hotmail.com으로 스팸 회원(봇)이 많이 자동 가입되는 것을 목격한 적이 있습니다. hotmail.com이나 일회성 이메일 서비스를 통해 생성되는 도메인을 차단하면 스팸 가입자를 많이 줄일 수 있을 것 같습니다.

특정 도메인의 이메일 주소만 허용하고 싶은 경우 다음 글을 참고하시기 바랍니다.


댓글 남기기

Leave a Comment