2015-02-06 5 views
0

user_login_statusactivation_code 이라는 사용자 정의 필드를 wp_usermeta 테이블에 삽입했습니다.Wordpress 사용자 정의 사용자 인증

내가 계정이 아직 활성화되지 않은 경우 사용자를 확인 할 수없는 오전 login 페이지 여기

function dlf_auth($username, $password) { 

global $user; 
get_currentuserinfo(); 
$creds = array(); 
$creds['user_login'] = $username; 
$creds['user_password'] = $password; 
$creds['remember'] = true; 
$user = wp_signon($creds, false); 


if (is_wp_error($user)) { 

     //get user email 
     $email = $_POST['login_name']; 
     $users= get_user_by('email', $email);// 
     $key = 'user_login_status'; 
     //get user login status 
     $user_status = get_user_meta($users->ID, $key); 
     $user_approve = $user_status[0]; 
     $error_msg = ''; 

     //if email does not exist in DB 
     if(!email_exists($email)){ 
     $error_msg = 'ERROR: E-mail address does not exist.';  

     //if user is not approved 
     }elseif($user_approve == 0){ 
     $error_msg = 'ERROR: Your account is not activated.'; 

     //if invalid email or password 
     }else{ 
     $error_msg = 'ERROR: Invalid e-mail address or password.'; 
     } 

     echo $error_msg; 
} 

if (!is_wp_error($user)) { 
    wp_redirect(site_url().'/overview'); 
    exit(); 
} 

} 

에 내 코드입니다. 사용자는 계속 로그인 할 수 있습니다.

meta_data 사용자를 사용하여 인증을 확인하려면 어떻게해야합니까? 나는 코어 wp_user 코어를 수정 wanmt하지 않습니다.

wp_signonmeta_data 유효성 검사를 추가로 확인하지 않습니까?

답변

0

WordPress 자체는 유효성 검사와 같지 않으므로 직접 추가 한 것입니다. 그러므로 wp_signon을 사용하여 사용자를 로그인하기 전에 승인 정보를 확인해야합니다.

0

나는이 문제에 대한 해결책을 찾은 것보다 며칠 전 직면하고 있습니다. 아약스 기반 사용자 정의 사용자 인증을 사용해야합니다. 아래 코드를 확인하십시오.

<?php 


    function custom_login_form() { 

     if(!empty($_POST) && $_POST['action'] == 'custom_login_form') { 
      $creds = array(); 
      $creds['user_login'] = $_REQUEST['username']; 
      $creds['user_password'] = $_REQUEST['password']; 
      $creds['remember'] = false; 
      $user = wp_signon($creds, false); 

      if(!is_wp_error($user)) { 
       if(!empty($user)) { 

       /* Use custom query or condition here for check extra values */ 

        $customCondition = true 
        if($customCondition) { 
         return true; 

        } else { 
         wp_logout(); 
         return false; 
        } 
       } else { 
        return false; 
       } 
      } else { 

       return false; 
      } 
     } else { 

      return false; 
     } 

    }