늘 고생하시는 제작자님 감사합니다.
add_action('wpmem_pre_register_data', 'my_wpmem_pre_register_data', 10, 1);
add_action('wpmem_post_update_data', 'my_wpmem_pre_register_data', 10, 1);
function my_wpmem_pre_register_data($fields){
$display_name = isset($fields['display_name']) ? $fields['display_name'] : '';
$length = mb_strlen($display_name, 'utf-8');
if($length < 2 || $length > 8){
echo "<script>alert('별칭은 2글자 이상 8자 이하만 입력 가능합니다.'); history.go(-1);</script>";
exit;
}
}
제작자님이 알려주신 위 코드로 회원가입 때는 잘 적용이 되었는데요
정보 수정할 때는 alert은 나오는 데 정보가 수정이 되어 버리네요..
혹시 방법이 있을까요?
안녕하세요~^^
wpmem_post_update_data 액션은 회원정보 수정 후에 코드가 실행됩니다.
그렇기 때문에 회원정보의 값이 모두 변경된 후 해당 코드가 실행됩니다.
wpmem_pre_update_data 액션을 활용해서 업데이트 전에 체크를 해보시겠어요?
해당 액션의 자세한 내용은
아래의 링크를 참고해보세요.
https://rocketgeek.com/plugins/wp-members/docs/filter-hooks/wpmem_pre_update_data/
고맙습니다.
add_action('wpmem_pre_register_data', 'my_wpmem_pre_register_data', 10, 1);
add_action('wpmem_post_update_data', 'my_wpmem_pre_register_data', 10, 1);
function my_wpmem_pre_register_data($fields){
$display_name = isset($fields['display_name']) ? $fields['display_name'] : '';
$length = mb_strlen($display_name, 'utf-8');
if($length < 2 || $length > 7){
echo "<script>alert('별칭은 2글자 이상 7자 이하만 입력 가능합니다.'); history.go(-1);</script>";
exit;
}
}
여기서
$display_name = isset($fields['display_name']) ? $fields['display_name'] : ''; <- 이 부분이 닉네임을 변경하는 위치고
$length = mb_strlen($display_name, 'utf-8'); <- 이 부분이 아래 부분과 같이 길이를 검사하는 부분인 거 같은데..
if($length < 2 || $length > 7){
echo "<script>alert('별칭은 2글자 이상 7자 이하만 입력 가능합니다.'); history.go(-1);</script>";
exit;
}
저 순서만 바꾸면 alert 창만 뜨고 다음으로 진행이 안되더라구요..ㅜㅜ
제가 PHP 완전 초보라.. 아직 해석이 어렵네요..
안녕하세요.
기존 적용하신 코드는 그대로 두시고
wpmem_post_update_data 부분만 wpmem_pre_update_data로 교체해서 확인해보시겠어요?
고맙습니다.
와.. 잘 됩니다.. 감사합니다 ><!!! ㅠㅠㅠ