회원관리 소셜 로그인후 약관동의

1. 필수 항목으로 약관동의, 휴대폰 등 받고 있습니다.  소셜 로그인 누르면 "필수 항목을 입력해주세요" 팝업이 뜨며 바로 회원정보수정페이지로 갑니다. 

최초로그인시 약관동의란와 개인정보 체크를 받고 싶은데 없습니다. 약관동의,개인정보 란 제외한 필수 필드가 나오고 있습니다. policy_service, policy_privacy 체크박스인것 확인했습니다.

https://imgur.com/FOPlyUt

https://imgur.com/JNent6E

2.  다른 내용으로 개인정보 동의란의 역할을 하는 체크박스를 하나 더 만들고 싶습니다. 메타필드값은 unique해야하는 것으로 아는데 회원관리 플러그인내 코드를 어디로 수정해야할까요? 

 

 

 

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

    코스모스팜 회원관리 플러그인 내 정보 수정 페이지에서는

    기본적으로 이용약관, 개인정보 체크박스를 숨긴다.

    만약, 회원가입 시 이용약관, 개인정보 체크박스를 체크하지 않은

    소셜 로그인 사용자나 기존 회원 중에서 이용약관, 개인정보 체크박스를 체크하지 않은 사용자에게

    내 정보 수정 페이지에서 해당 필드들을 표시하시려면

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

    add_filter('wpmem_register_form_rows', 'wpmem_register_form_rows_20211019', 999, 2);
    function wpmem_register_form_rows_20211019($rows, $toggle){
    	if($toggle == 'edit'){
    		$policy_service = get_user_meta(get_current_user_id(), 'policy_service', true);
    		$policy_privacy = get_user_meta(get_current_user_id(), 'policy_privacy', true);
    		
    		$fields = wpmem_fields();
    		
    		if(!$policy_service){
    			$policy_service_content = wpautop(get_cosmosfarm_policy_service_content());
    			$rows['policy_service']['field_before'] = '<div class="div_checkbox agree">';
    			$rows['policy_service']['field_before'] .= "<div class=\"policy_content\">{$policy_service_content}</div>";
    			$rows['policy_service']['field'] = '<label><input name="policy_service" type="checkbox" id="policy_service" value="agree">' . sprintf(__('I agree to %s.', 'cosmosfarm-members'), $fields['policy_service']['label']) . '</label>';
    		}
    		if(!$policy_privacy){
    			$policy_privacy_content = wpautop(get_cosmosfarm_policy_privacy_content());
    			$rows['policy_privacy']['field_before'] = '<div class="div_checkbox agree">';
    			$rows['policy_privacy']['field_before'] .= "<div class=\"policy_content\">{$policy_privacy_content}</div>";
    			$rows['policy_privacy']['field'] = '<label><input name="policy_privacy" type="checkbox" id="policy_privacy" value="agree">' . sprintf(__('I agree to %s.', 'cosmosfarm-members'), $fields['policy_privacy']['label']) . '</label>';
    		}
    	}
    	
    	return $rows;
    }

    테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.

     

    그리고 위의 코드를 보면 wpmem_register_form_rows 필터를 활용해서

    이용약관 및 개인정보 필드를 표시하고 있습니다.

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

    새로운 동의 필드를 만드실 때도 wpmem_register_form_rows 필터를 활용해보시겠어요?

    wpmem_register_form_rows 필터에 대한 자세한 내용은

    아래 링크를 참고해보세요.

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

    고맙습니다.

  • 안녕하세요 

    위 코드를 적용하여 프로필 페이지에서 뜨고 있습니다. 소셜로그인후 동의를 바로 받을 수 있도록 하고자하는 것이 목적인데

    그런데 이용약관과 개인정보동의 옆에 필수사항 *표시는 안뜨고 있습니다. 

    필수인 이름 등은 입력하지않고 프로필 업데이트를 누르면 please fill out this field로 나와 넘어가지 않습니다만

    이용약관과 개인정보동의는 체크하지 않고도 프로필 업데이트를 누를 수 있네요, 누른 다음에 

     

    "죄송합니다. 이용약관는 필수란입니다."이라고 나온 후 방금 기입한 프로필이 저장되지 않습니다. 

    개인정보, 약관동의도 이름처럼 필수 확인 후 넘어가게 하고 싶습니다. 

     

  • 개인정보정보동의와 같은 디자인을 나오도록 policy_privacy2를 만들고 싶은데 

     

    $policy_privacy_content = wpautop(get_cosmosfarm_policy_privacy_content()); 

    해당 코드는 회원가입관리 > 개인정보에 기입한 내용을 가져오는 것으로 생각됩니다. 


    알려주신 위 코드에 아래처럼 추가하면 될까요?? 혹은 프로필수정에만 뜨고 회원가입시에는 안뜨나요?회원가입시에도 뜨게하고 싶습니다. 
     

    $policy_privacy2 = get_user_meta(get_current_user_id(), 'policy_privacy2', true);
    $fields = wpmem_fields();
    
    if(!$policy_privacy2){ $policy_privacy2_content ="<b>[개인정보 두번쨰 수집 및 이용 동의]</b>
    <p style="text-align: center;"></p>
    <span style="font-weight: 400;">두번째 필드 내용입니다.</span>;"
    
    
    $rows['policy_privacy2']['field_before'] = '<div class="div_checkbox agree">';
    $rows['policy_privacy2']['field_before'] .= "<div class=\"policy_content\">{$policy_privacy2_content}</div>";
    $rows['policy_privacy2']['field'] = '<label><input name="policy_privacy2" type="checkbox" id="policy_privacy" value="agree">' . sprintf(__('I agree to %s.', 'cosmosfarm-members'), $fields['policy_privacy2']['label']) . '</label>'; }

    class와 Id는 같은 디자인을 위해 Policy_privacy를 동일하게 사용, input name을 policy_privacy2로 교체하였습니다. 

  • 1. 필드 필수 표시나 required 속성을 추가하시려면

    기존의 코드 대신 아래의 코드로 교체해보세요.

    add_filter('wpmem_register_form_rows', 'wpmem_register_form_rows_20211019', 999, 2);
    function wpmem_register_form_rows_20211019($rows, $toggle){
    	if($toggle == 'edit'){
    		$policy_service = get_user_meta(get_current_user_id(), 'policy_service', true);
    		$policy_privacy = get_user_meta(get_current_user_id(), 'policy_privacy', true);
    		
    		$fields = wpmem_fields();
    		
    		if(!$policy_service){
    			$policy_service_content = wpautop(get_cosmosfarm_policy_service_content());
    			$rows['policy_service']['label'] = '<label for="policy_service" class="text">'.$fields['policy_service']['label'].'<span class="req">*</span></label>';
    			$rows['policy_service']['field_before'] = '<div class="div_checkbox agree">';
    			$rows['policy_service']['field_before'] .= "<div class=\"policy_content\">{$policy_service_content}</div>";
    			$rows['policy_service']['field'] = '<label><input name="policy_service" type="checkbox" id="policy_service" value="agree" required>' . sprintf(__('I agree to %s.', 'cosmosfarm-members'), $fields['policy_service']['label']) . '</label>';
    		}
    		if(!$policy_privacy){
    			$policy_privacy_content = wpautop(get_cosmosfarm_policy_privacy_content());
    			$rows['policy_privacy']['label'] = '<label for="policy_privacy" class="text">'.$fields['policy_privacy']['label'].'<span class="req">*</span></label>';
    			$rows['policy_privacy']['field_before'] = '<div class="div_checkbox agree">';
    			$rows['policy_privacy']['field_before'] .= "<div class=\"policy_content\">{$policy_privacy_content}</div>";
    			$rows['policy_privacy']['field'] = '<label><input name="policy_privacy" type="checkbox" id="policy_privacy" value="agree" required>' . sprintf(__('I agree to %s.', 'cosmosfarm-members'), $fields['policy_privacy']['label']) . '</label>';
    		}
    	}
    	
    	return $rows;
    }

     

    2. wpmem_register_form_rows 필터를 활용하시면

    이용약관이나 개인정보 필드처럼 표시하실 수 있습니다.

    그리고, wpmem_register_form_rows 필터 추가 시

    함수 파라미터 중 2번째 파라미터인 $toggle 변수로 회원가입 페이지에만 표시하거나

    회원정보 페이지에만 표시되게 하실 수 있으며

    $toggle 변수를 활용하지 않으면 회원가입, 회원정보 페이지에서 모두 표시됩니다.

    $toggle 변수가 회원가입 페이지에서는 'new'로 적용되며

    회원정보 페이지에서는 'edit'로 적용됩니다.

    고맙습니다.

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