코스모스팜 회원가입 시 닉네임 글자수 제한

안녕하세요,

 

항상 감사한 마음으로 플러그인을 사용하고 있습니다.

다름 아니라, 회원가입 시 닉네임에 글자 수 제한을 두고 싶은데 어떻게 하면 구현할 수 있을까요?

제가 검색을 통해 시도해본 코드는 아래 2가지인데 둘다 작동하지 않아서 문의 드립니다.

아울러, 제가 중복 확인 기능을 사용하고 있는데 해당 validation에 글자 수 제한 스크립트를 추가하는 방법이 있을까요?

 

1.function.php 파일에 코드 추가

//닉네임 글자수 제한

 

add_action('personal_options_update', 'update_extra_profile_fields', 10, 1);

function update_extra_profile_fields($user_id){

    $nickname = isset($_POST['nickname'])&&$_POST['nickname'] ? sanitize_text_field($_POST['nickname']) : '';

    $length = mb_strlen($nickname, 'utf-8');

    

    if($length < 2 || $length > 12){

        echo "<script>alert('별칭은 2글자 이상 12자 이하만 입력 가능합니다.'); history.go(-1);</script>";

        exit;

    }

}

 

2.코스모스팜 회원관리 플러그인 skin 폴더 내 script 파일

    //아이디 길이 제한 스크립트

    if(jQuery('input[name="display_name"]').length){

        var value = jQuery('input[name="display_name"]').val();

        var check = true;

        for(var i = 0; i < value.length; i++){

            var chr = value.substr(i,1);

            chr = escape(chr);

            if(chr.charAt(1) == "u"){

                chr = chr.substr(2, (chr.length - 1));

                if((chr < "AC00") || (chr > "D7A3")){

                    check = false;

                }

            }

            else{

                check = false;

            }

        }

        

        if(check){

            if(value.length < 2 || value.length > 12){

                alert('한글은 2~12자만 허용됩니다.');

                return false;

            }

        }

        else{

            if(value.length < 2 || value.length > 16){

                alert('영어는 2~16자만 허용됩니다.');

                return false;

            }

        }

    }

 

 

감사합니다

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
  • 안녕하세요~^^

    본문에 코드를 올려주실 땐

    반드시 에디터의 코드 스니펫 삽입 기능으로 올려주시길 부탁드립니다.

    https://imgur.com/a/WJx929q

    그렇지 않으면 코드가 이상해져서 에러 나는 코드로 바뀌거나,

    질의응답 시 의사소통에 오해와 문제가 생길 수도 있습니다.

     

    현재 회원가입 시 닉네임 필드는 어떤 필드로 입력받고 있으신지요?

    올려주신 코드는 회원가입 필드 중 메타키가 nickname인 필드에 적용됩니다.

    다른 필드로 닉네임을 받고 있다면 해당 필드 메타키로 교체해서 확인해보시겠어요?

     

    워드프레스 관리자 -> 설정 -> WP-Members -> 필드 탭에서

    필드 메타키를 확인하실 수 있습니다.

    고맙습니다.

  • 현재 닉네임필드는 display_name으로 받고 있습니다. display name으로 바꾸어서 회원정보 페이지에서 긴아이디로 수정을 해보았는데 수정이되어버립니다. 

  • 안녕하세요.

    실제 추가하신 코드는 어떻게 되시는지요?

    회원가입 및 회원정보 수정 시 메타키가 display_name인 필드의 길이를 체크하시려면

    워드프레스 관리자 -> 외모 -> 테마 편집기 페이지에서 functions.php 파일 하단에

    아래의 코드를 추가해보시겠어요?

    add_action('wpmem_pre_register_data', 'my_wpmem_pre_register_data', 10, 1);
    add_action('wpmem_post_update_data', 'my_wpmem_pre_register_data', 10, 1);
    function my_wpmem_pre_register_data($fields){
    	$display_name = isset($fields['display_name']) ? $fields['display_name'] : '';
    	$length = mb_strlen($display_name, 'utf-8');
    	
    	if($length < 2 || $length > 12){
    		echo "<script>alert('별칭은 2글자 이상 12자 이하만 입력 가능합니다.'); history.go(-1);</script>";
    		exit;
    	}
    }

    고맙습니다.

  • 말씀 주신 코드 입력해서 테스트해봤는데 회원가입 시에는 회원가입이 되지 않고 alert 를 띄우면서 완벽하게 회원가입을 방지해줍니다

    그런데 회원정보 수정화면에서 프로필 업데이트를 하게되면 수정이 됩니다.

    정확히 말하면 alert가 뜨고 회원정보 수정 페이지에 머물지만 실제로는 닉네임이 바뀐 상태입니다.

    혹시나 이런 경우는 어떻게 해결하면 좋을까요?

  • 안녕하세요.

    회원정보 수정이 되기 전에 체크를 해야 할 듯합니다.

    이전 댓글에 안내해드린 코드 중 wpmem_post_update_data 부분을

    wpmem_pre_update_data로 교체해서 확인해보시겠어요?

     

    wpmem_pre_update_data 액션은 실제 회원정보 업데이트가 되기 전에 실행됩니다.

    자세한 내용은 아래의 링크를 참고해보시겠어요?

    https://rocketgeek.com/plugins/wp-members/docs/filter-hooks/wpmem_pre_update_data/

    고맙습니다.

  • 항상 친절한 답변 감사 드립니다. 관리자님의 답변으로 워드프레스에 대한 이해가 나날이 늘어갑니다. 항상 답변을 공부하는 마음으로 보고 있습니다. 감사합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기