회원관리 이메일 인증 가입 후 내 정보 수정에서 이메일 변경

안녕하세요

코스모스팜 회원관리 플러그인을 사용중입니다.
현재 설정값은,
이메일로 로그인하기 활성화 하였으며, 이메일 인증 기능 또한 활성화 해서 이메일 인증 후 사이트 이용이 가능합니다.

만약,
유저가 가입이 후 프로필에서 이메일을 변경한다면 신규 이메일에 다시 인증을 하는 방법이 있을까요?

최초에 정상적인 본인 이메일로 인증받아 가입한 후에 가상이메일로 변경하면 인증받지 않은 이메일로 사이트를 사용하는거라 이 부분에 대한 해결방법이 있는지 궁금합니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    간단하게 이메일을 변경하지 못하도록 하는 것은

    어떠신가요?

     

    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);

    고맙습니다.

워드프레스 에러 기술지원 서비스 전문가에게 맡기세요