안녕하세요 :)
워드프레스를 이용해서 커머스 사이트를 제작중에 있습니다.
회원제 사이트로 회원이 되고 관리자가 승인을 해줘야 이용이 가능한 사이트입니다.
https://imgur.com/F0wjF7k
1. 로그인시 회원정보(아이디 패스워드)가 달라서 실패
2. 로그인시 비활성화 상태라서 실패
이 두가지를 모두 제어하고 싶은데
add_filter('wpmem_login_failed', 'my_wp_login_failed', 10, 1);
function my_wp_login_failed($str){
echo "<script>alert(\"로그인 정보가 틀렸습니다. 실시간상담 혹은 비밀번호 찾기를 진행 해주세요.\"); history.go(-1)</script>";
exit;
}
이렇게 진행하니 비활성화나 회원정보가 틀렸을때나 둘다 적용됩니다.
로그인시 회원정보(아이디 패스워드)가 달라서 실패 -> alert띄우고 이전페이지
로그인시 비활성화 상태라서 실패 -> 특정 페이지 이동
이렇게 진행하고 싶습니다.
감사합니다.
안녕하세요~^^
wpmem_login_failed_args 필터를 활용하시면
로그인 시 활성화 되지 않은 사용자가 로그인을 시도하거나
아이디, 비밀번호 잘못 입력할 때의 상황에 따라 코드를 실행되게 하실 수 있습니다.
올려주신 코드 대신 아래의 코드를 활용해보시겠어요?
add_filter('wpmem_login_failed_args', 'wpmem_login_failed_args_20200928', 10, 1);
function wpmem_login_failed_args_20200928($args){
global $wpmem;
$user_login = isset($_POST['log'])?sanitize_user($_POST['log']):'';
$user_password = isset($_POST['pwd'])?$_POST['pwd']:'';
$user = get_user_by('login', $user_login);
if(!$user){
$user = get_user_by('email', $user_login);
}
if($user && wp_check_password($user_password, $user->data->user_pass, $user->ID)){
if(($wpmem->mod_reg == 1) && (get_user_meta($user->ID, 'active', true) != 1)){
// 사용자가 활성화 되지 않았을 때 실행됩니다.
}
}
else{
// 유효하지 않은 아이디 또는 비밀번호 입력 시 실행됩니다.
}
return $args;
}
고맙습니다.