코스모스팜 스레드

닉네임을 관리자 승인 후 변경 가능하게 할 수 있나요?

안녕하세요, 코스모스팜 회원관리 플러그인을 사용중입니다. 다름아니오라, 닉네임을 사용자가 수정을 못하도록 막아두고, 관리자 승인 후 변경 가능하도록 할 수 있는지요?

사용 시나리오는..
1. 회원가입 완료
2. 유저가 닉네임 변경을 원할때 회원정보 페이지 방문
3. 내 정보 수정 클릭
4. 닉네임 변경을 위한 타이핑 불가
5. 닉네임 메뉴명 오른쪽에 관리자에게 문의 링크
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)
  • 안녕하세요~^^

    회원정보 편집 화면을 수정하시려면,

    WP-Members 플러그인의 필터를 사용해서 코드를 편집해야 합니다.

    wpmem_register_form_rows 이 필터를 사용하면 필드의 HTML 코드를 변경할 수 있습니다.

    wpmem_register_fields_arr 이 필터를 사용하면 필드의 설정을 변경할 수 있습니다.

     

    WP-Members 플러그인의 전체 액션과 필터 정보는 아래 링크된 페이지에서 확인 가능합니다.

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

     

    회원정보 입력 필드를 수정하지 못하게 하시려면

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

    아래의 코드를 활용해보시겠어요?

    add_filter('wpmem_register_form_rows', 'my_register_form_rows', 10, 2);
    function my_register_form_rows($row, $toggle){
        if($toggle == 'edit'){
            $row['메타키']['field_before'] = '<div class="메타키_readonly">';
            $row['메타키']['field_after'] = '</div>';
        }
        return $row;
    }

    위 코드에서 메타키 부분을 실제 사용 중인 필드의 Meta Key 값으로 변경해주세요.

    Meta Key 값은 WP- Members 플러그인의 필드 관리 페이지에서 확인할 수 있습니다.

    고맙습니다.

  • 안녕하세요.

    이전 댓글에 안내해드린 코드가 정상적으로 동작하지 않는다면

    아래의 코드로 교체해서 확인해보시겠어요?

    add_filter('wpmem_register_form_rows', 'my_register_form_rows', 10, 2);
    function my_register_form_rows($row, $toggle){
    	if($toggle == 'edit'){
    		$user = wp_get_current_user();
    		$row['display_name']['field'] = '<input name="display_name" type="text" id="display_name" value="'.$user->display_name.'" class="textbox" readonly>';
    	}
    	return $row;
    }

    고맙습니다.

  • 아래의 방법이 가능할 것 같은데 삽입 하는 방법을 잘 모르겠습니다.

    1. 회원가입때는 닉네임 입력이 가능하나 회원정보 페이지에서는 readonly 를 삽입하여 변경 불가
    2. 닉네임 메뉴명 우측에 "변경요청" 링크(회원가입시에는 노출이 안되고, 회원정보 페이지에서만 출력) 삽입 하여 관리자 문의 페이지(별도 생성)로 이동
    3. 닉네임 메타키는 display_name 입니다.
  • @스레드봇 

    안녕하세요, 스레드봇님. 알려주신 내용을 적용하여 보았으나 동작이 안되어 재문의드립니다. 아래와 같은 상황으로, 알려주신 코드를 어떻게 적용하면 회원정보 수정 시 닉네임 필드를 readonly로 출력할 수 있을까요? (회원가입시에는 입력이 가능해야 함)

     

    회원정보 수정에서 닉네임 필드를 개발자 도구로 소스코드를 보면 #0와 같이 출력이 됩니다.

    #0

    <div class="div_text">
    <input name="display_name" type="text" id="display_name" value="벨류" class="textbox" placeholder="" required>
    </div>

     

    알려주신 코드를 테마 펑션 파일에 적용하여 같은 회원정보 수정에서 닉네임 필드를 개발자 도구로 소스코드를 보면 아래 #1과 같이 바뀝니다. 다만 기능상에 있어 닉네임 필드가 readonly로 바뀌지는 않았습니다.

    #1

    <div class="display_name_readonly">
    <input name="display_name" type="text" id="display_name" value="벨류값" class="textbox" placeholder="" required>
    </div>

     

    알려주신 코드 적용 전 테스트로 required 다음에 readonly 속성을 추가시키면 해당 닉네임 필드가  readonly로 동작합니다. 

    #3

    <div class="div_text">
    <input name="display_name" type="text" id="display_name" value="벨류" class="textbox" placeholder="" required readonly>
    </div>
  • @스레드봇 감사합니다. 잘 작동됩니다~

이미지 사진은 imgur에 업로드한 뒤 링크 걸어주세요.
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)