예를들어 회원가입시에 wp-members 필드에서
이메일 (user_email)
아이디 (username)
비번 (password)
비번확인 (confirm_password)
연락처 (billing_phone)
자기소개 (self_introduce)
인사말(say_hello)
이렇게 필드를 적용을 해서, 회원가입시 위의 정보를 받게끔하고,
내정보수정시에는 다른필드들은 전부 가리고, 인사말만 출력시키어 변경을 하게 싶은경우
add_filter('wpmem_register_form_rows', 'my_register_form_rows_filter2021', 10, 2);
function my_register_form_rows_filter2021($rows, $toggle){
if($toggle == 'edit'){
unset($rows['user_email']);
~~~~~~~~~~(그다음 출력시키고 싶지않은 메타키 쭉욱~~
이렇게 unset을 이용해서, 내정보 수정에는 다른필드들은 전부 안뜨게되고,
인사말(메타키=say_hello)만 뜨긴하지만, 막상 프로필업데이트를 누르면
죄송합니다. 이메일은 필수란입니다. 라는 메세지가 뜹니다ㅠㅠㅠ
그래서 좀 더 검색결과
$meta_key = 'user_email';
if($toggle == 'edit' && isset($rows[$meta_key])){
$meta = get_user_meta(get_current_user_id(), $meta_key, true);
$rows[$meta_key]['label'] = '';
$rows[$meta_key]['field'] = '<input type="hidden" name="'.$meta_key.'" value="'.$meta.'">';
unset 대신에 위의 방식을 적용시켜보았으나, 마찬가지로 이메일은 필수란이라는 메세지가뜹니다.
그래서 뭐지?? 해서, 위의 hidden을 text로 바꿔보니, value의 .$meta. (이메일값)이 안찍히드라구요.ㅠ
이것을 어떻게 해결해야할까요ㅠㅠㅠ
즉 내정보수정에서 인사말(say_hello)만 수정가능하게끔하고, 수정시에는 다른 필드들은 안뜨게 하구 싶습니다ㅠ
안녕하세요~^^
워드프레스 사이트에서 사용자 이메일은
get_user_meta 함수가 아닌 get_userdata 함수 또는 wp_get_current_user 함수를 활용해보시겠어요?
올려주신 코드 중 아래의 코드를
$meta = get_user_meta(get_current_user_id(), $meta_key, true);
아래의 코드로 교체해보세요.
$user = get_userdata(get_current_user_id());
$meta = $user->user_email;
또는 아래의 코드로도 사용하실 수 있습니다.
$user = wp_get_current_user();
$meta = $user->user_email;
고맙습니다.