안녕하세요, 코스모스팜 회원관리를 구입해서 잘 사용하고 있는데요,
일반가입 시 이메일 인증 가입을 사용하고 있는데, 소셜 로그인에는 동작하지 않는다고 알고 있습니다.
그런데 페이스북, 구글, 네이버, 카카오 소셜 로그인 시에도 이메일 인증 메일이 발송됩니다.
발송된 메일로 메일 인증하지 않아도 가입은 잘 완료됩니다만, 왜 인증 메일이 동작하는지 모르겠네요.
어떤 부분이 문제인지 말씀해주시면 정말 감사하겠습니다.
안녕하세요~^^
소셜 로그인으로 가입된 사용자에게는 이메일 인증 메일을 보내지 않는 코드를 추가해보시겠어요?
FTP로 접속해서 /wp-content/plugins/cosmosfarm-members/cosmosfarm-members.php 파일에
아래의 코드를 찾아서
function cosmosfarm_members_send_verify_email($user, $verify_code=''){
if($user->ID && $user->user_email){
if(!$verify_code) $verify_code = md5(uniqid());
$option = get_cosmosfarm_members_option();
if($option->verify_email_title && $option->verify_email_content){
$blogname = get_option('blogname');
$home_url = home_url();
$verify_email_url = home_url('?action=cosmosfarm_members_verify_email_confirm&verify_code='.$verify_code);
$subject = str_replace('[blogname]', $blogname, $option->verify_email_title);
$subject = str_replace('[home_url]', sprintf('<a href="%s" target="_blank">%s</a>', $home_url, $home_url), $subject);
$subject = str_replace('[verify_email_url]', sprintf('<a href="%s" target="_blank">%s</a>', $verify_email_url, $verify_email_url), $subject);
$message = str_replace('[blogname]', $blogname, $option->verify_email_content);
$message = str_replace('[home_url]', sprintf('<a href="%s" target="_blank">%s</a>', $home_url, $home_url), $message);
$message = str_replace('[verify_email_url]', sprintf('<a href="%s" target="_blank">%s</a>', $verify_email_url, $verify_email_url), $message);
if($option->allow_email_login){
$subject = str_replace('[id_or_email]', $user->user_email, $subject);
$message = str_replace('[id_or_email]', $user->user_email, $message);
}
else{
$subject = str_replace('[id_or_email]', $user->display_name, $subject);
$message = str_replace('[id_or_email]', $user->display_name, $message);
}
$verify_email = array(
'to' => $user->user_email,
'subject' => $subject,
'message' => $message,
);
$verify_email = apply_filters('cosmosfarm_members_send_verify_email', $verify_email, $user);
$mail = new Cosmosfarm_Members_Mail();
$mail->send($verify_email);
}
}
return $verify_code;
}
아래의 코드로 교체해보세요.
function cosmosfarm_members_send_verify_email($user, $verify_code=''){
$action = isset($_GET['action']) ? sanitize_text_field($_GET['action']) : '';
if($user->ID && $user->user_email && !$action){
if(!$verify_code) $verify_code = md5(uniqid());
$option = get_cosmosfarm_members_option();
if($option->verify_email_title && $option->verify_email_content){
$blogname = get_option('blogname');
$home_url = home_url();
$verify_email_url = home_url('?action=cosmosfarm_members_verify_email_confirm&verify_code='.$verify_code);
$subject = str_replace('[blogname]', $blogname, $option->verify_email_title);
$subject = str_replace('[home_url]', sprintf('<a href="%s" target="_blank">%s</a>', $home_url, $home_url), $subject);
$subject = str_replace('[verify_email_url]', sprintf('<a href="%s" target="_blank">%s</a>', $verify_email_url, $verify_email_url), $subject);
$message = str_replace('[blogname]', $blogname, $option->verify_email_content);
$message = str_replace('[home_url]', sprintf('<a href="%s" target="_blank">%s</a>', $home_url, $home_url), $message);
$message = str_replace('[verify_email_url]', sprintf('<a href="%s" target="_blank">%s</a>', $verify_email_url, $verify_email_url), $message);
if($option->allow_email_login){
$subject = str_replace('[id_or_email]', $user->user_email, $subject);
$message = str_replace('[id_or_email]', $user->user_email, $message);
}
else{
$subject = str_replace('[id_or_email]', $user->display_name, $subject);
$message = str_replace('[id_or_email]', $user->display_name, $message);
}
$verify_email = array(
'to' => $user->user_email,
'subject' => $subject,
'message' => $message,
);
$verify_email = apply_filters('cosmosfarm_members_send_verify_email', $verify_email, $user);
$mail = new Cosmosfarm_Members_Mail();
$mail->send($verify_email);
}
}
return $verify_code;
}
해당 코드 변경 사항은 추후 업데이트에 반영하도록 하겠습니다.
고맙습니다.
말씀하신 대로 하니 잘 변경되었습니다. 감사합니다.