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'로 적용됩니다.
고맙습니다.