회원가입시 필드 및 회원가입후 필드에 대하여 질문드립니다

안녕하세요. 워드프레스 포스트기능만을 이용해보려하다가 케이보드가 자료도 많고 이용자도 많은거같아서
최근에 다시 또 1년 비즈 라이센스를 구매한사람입니다.

질문드립니다.

1. 예를들어
-아이디
-닉네임
-이메일
-비밀번호
-비밀번호확인
-집주소
-연락처

필드를 wp-member를 통해 만들어놓았다고 치겠습니다.
근데 회원가입시에는 아이디/닉네임/이메일/비빌번호/비밀번호확인 여기까지만 보여주고싶습니다.

그리고 회원가입후 회원이 로그인해서 내정보수정을 할때 그외에 집주소와 연락처등을 추가로 기입하게끔 하고 싶은데
이렇게 하려면 어떻게 해야할까요?ㅠ 가입시에는 최대한 간략히하고 그외 실활동을 원하는 회원들에게 정확한 정보를 입력하라고 하고싶습니다ㅠ

 

2.내정보수정에서 예를들어 닉네임을 last_name 필드로 이용한다고 치면, 회원가입후 저 last_name필드를 수정을 못하게끔 하려면 어떻게해야할까요?ㅠ

(특정 페이지에 내정보수정이 있을경우 이곳은 read only로 처리해라. 뭐 이런 일일히 php 삽질로 read only 를 넣으면 뭔가 될거같기도한데...ㅠ 왠지 저렇게까지하는건 뭔가 삽질인거같아서ㅠㅠ)

 

항상 고생많으시고, 언제나 감사드립니다. 케이보드가 국민보드가 될수있도록 더욱더 많은 분들이 이용해나가길 기원하겠습니다~!

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

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

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

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

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

     

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

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

     

    1. 회원가입 시 WP-Members 플러그인 일부 필드를 안 보이게 하시려면

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

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

    add_filter('wpmem_register_form_rows', 'my_register_form_rows', 10, 2);
    function my_register_form_rows($row, $toggle){
    	if($toggle == 'new'){
    		unset($row['메타키1']);
    		unset($row['메타키2']);
    	}
    	return $row;
    }

    위의 코드에서 메타키 부분은 실제 필드의 메타키로 적용해보시겠어요?

    위의 코드를 활용하시면 더 많은 필드를 회원가입 페이지에서만 안 보이게 하실 수 있습니다.

     

    2. 내정보수정 페이지에서 회원가입 시 입력한 정보를 수정할 수 없게 하시려면

    wpmem_register_form_rows 필터를 활용해서 readonly 속성을 추가해보시겠어요?

    테마 쪽 functions.php 파일 하단에

    아래의 코드를 추가해보세요.

    add_filter('wpmem_register_form_rows', 'my_register_form_rows', 999, 2);
    function my_register_form_rows($rows, $toggle){
    	$meta_key = '메타키';
    	if($toggle == 'edit' && isset($rows[$meta_key])){
    		$meta_value = get_user_meta(get_current_user_id(), $meta_key, true);
    		$rows[$meta_key]['field'] = '<input name="'.$meta_key.'" type="text" id="'.$meta_key.'" value="'.$meta_value.'" class="textbox" readonly>';
    	}
    	
    	return $rows;
    }

    위의 코드에서 $meta_key = '메타키'; 부분에는 실제 WP-Members 필드의 메타키로 적용해보세요.

     

    워드프레스 회원가입 화면 디자인 수정 방법 - WP-Members 플러그인도 참고해보세요.

    고맙습니다.

  • 안녕하세요, 정말 대삽질할뻔한것을 피했습니다ㅠㅠ 감사합니다ㅠ

    근데 회원가입시 다른필드 감추는건 되는데
    회원정보페이지에 리드온리주는코드는 펑션에 넣으면

    "The site is experiencing technical difficulties." 라고 뜨면서 사이트가 작동되지 않습니다.

    참고로 저는 멀티사이트에 각각 멀티사이트에 같은 테마를 사용하고 있는중입니다.

     

    1. 회원정보가입시 다른필드 가리는걸 특정번호에 멀티사이트일때 예를들어 멀티사이트가 4번이라 할때(blog=4)
    그때만 적용시킬수있도록 하는 코드를 할수도있을까요??(예를들어 3번 홈페이지에서는 phone, zipcode 라는 필드를 가입시 보이고싶고, 4번 홈페이지에서는 가입시 phone, zipcode라는 필드를 감추려합니다. 물론 3번홈페이지에서 phone2, zipcode2 뭐 이런식으로 메타키를 다르게 다시 설정해주면 되긴하겠지만,,, 왠지 이것도 조건문으로 바로 처리가 가능할거같아서요ㅠ)
    즉, add_filter('wpmem_register_form_rows', 'my_register_form_rows', 10, 2); function my_register_form_rows($row, $toggle){ if($toggle == 'new'){ unset($row['메타키1']); unset($row['메타키2']); } return $row; } 이 코드를 if로 어떤 특정조건으로 감싸주기만 하면 될거같기도한데
    만약 멀티사이트4번일경우(예를들어 if(blog='4'){ 알려주신코드 }, 이런식으로 처리하면될거같은데, 그누보드만 하다가 워프로 넘어온거라 멀티사이트를 지칭하는 코드를 잘 모르겠습니다ㅠㅠ

    2.첫번째코드는 어쨎든 펑션에 넣으니 잘 작동은합니다. 근데 두번쨰 알려주신 코드인, add_filter('wpmem_register_form_rows', 'my_register_form_rows', 999, 2); function my_register_form_rows($rows, $toggle){ $meta_key = '메타키'; if($toggle == 'edit' && isset($rows[$meta_key])){ $meta_value = get_user_meta(get_current_user_id(), $meta_key, true); $rows[$meta_key]['field'] = '<input name="'.$meta_key.'" type="text" id="'.$meta_key.'" value="'.$meta_value.'" class="textbox" readonly>'; } return $rows; } 이 코드를 펑션에 넣으면 홈페이지접속시 "The site is experiencing technical difficulties." 라는 에러만 출력합니다. 멀티사이트라서 안통하는게 아닌지, 제 사이트가 멀티사이트로 되어있다는것을 감안하고 다시 한번 확인해주실수있으실까요?ㅠ

  • 안녕하세요.

    코드를 올려주실 땐 에디터의 코드 스니펫 삽입 기능을 이용 부탁드립니다.

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

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

     

    1. 멀티 사이트로 운영 중일 때 특정 사이트에만 코드를 적용하시려면

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

    add_filter('wpmem_register_form_rows', 'my_register_form_rows', 10, 2);
    function my_register_form_rows($row, $toggle){
    	if($toggle == 'new' && get_current_blog_id() == '1'){ // 실제 멀티 사이트 ID로 적용해주세요.
    		echo get_current_blog_id();
    		unset($row['메타키1']);
    		unset($row['메타키2']);
    	}
    	return $row;
    }

    위의 코드에서 get_current_blog_id() == '1' 부분의 숫자는

    실제 멀티 사이트 ID로 교체해보세요.

     

    2. 코드 수정 후 페이지에 "The site is experiencing technical difficulties." 메시지가 표시된다면

    디버그 모드를 활성화해서 에러 메시지를 확인해보시겠어요?

    디버그 모드 활성화 방법은 아래의 링크를 참고해보세요.

    워드프레스 에러 확인하기 - 디버그 모드 활성화 방법

    고맙습니다.

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