안녕하세요
코스모스팜 회원관리 플러그인을 사용중입니다.
현재 설정값은,
이메일로 로그인하기 활성화 하였으며, 이메일 인증 기능 또한 활성화 해서 이메일 인증 후 사이트 이용이 가능합니다.
만약,
유저가 가입이 후 프로필에서 이메일을 변경한다면 신규 이메일에 다시 인증을 하는 방법이 있을까요?
최초에 정상적인 본인 이메일로 인증받아 가입한 후에 가상이메일로 변경하면 인증받지 않은 이메일로 사이트를 사용하는거라 이 부분에 대한 해결방법이 있는지 궁금합니다.
안녕하세요~^^
간단하게 이메일을 변경하지 못하도록 하는 것은
어떠신가요?
wpmem_pre_update_data 액션을 사용하면
회원정보 업데이트 전에 이전값과 입력된 값을 비교할 수 있습니다.
아래의 예제 코드는 이메일 변경을 시도하려고 할 때
변경할 수 없도록 하는 코드입니다.
아래 코드를 활용하여 적용해보시겠어요?
add_action('wpmem_pre_update_data', function($fields){
$current_user = wp_get_current_user();
if($current_user->user_email != $fields['user_email']){
?>
<script>
alert("이메일을 변경하실 수 없습니다.");
window.location.href = "<?php echo wp_get_referer()?>";
</script>
<?php
exit;
}
}, 10, 1);
고맙습니다.
wpmem_pre_update_data 액션과
wpmem_post_update_data 액션을 활용하여
이메일 인증 메일을 보낼 수 있을 듯 합니다.
아래의 코드를 테마 functions.php에 입력해보시겠어요?
add_action('wpmem_pre_update_data', function($fields){
$option = get_cosmosfarm_members_option();
if($option->verify_email && $fields['ID']){
$user = new WP_User($fields['ID']);
if($user->ID && $user->user_email){
$user_email = isset($fields['user_email']) ? sanitize_text_field($fields['user_email']) : '';
if($user->user_email != $user_email){
if(!session_id()){
session_start();
}
$_SESSION['cosmosfarm_members_send_verify_email'] = true;
}
}
}
}, 10, 1);
add_action('wpmem_post_update_data', function($fields, $user_id){
if(isset($_SESSION['cosmosfarm_members_send_verify_email']) && $_SESSION['cosmosfarm_members_send_verify_email']){
$user = new WP_User($user_id);
$verify_code = cosmosfarm_members_send_verify_email($user);
update_user_meta($user_id, 'wait_verify_email', $verify_code);
update_user_meta($user_id, 'send_verify_email_time', current_time('timestamp'));
}
}, 10, 2);
고맙습니다.