2017-08-28 89 views
0

我正在使用自定義登錄表單,這裏是代碼。成功登錄後重定向到/門戶頁面,但在門戶頁面用戶登錄狀態爲false。is_user_logged_in()在wp_signon後返回false

$email = $_REQUEST['login_email']; 
     $password = $_REQUEST['login_password']; 

     $args = array(
      'orderby'  => 'login', 
      'order'  => 'ASC', 
      'fields'  => 'all' 
      ); 
     $count=0; 
     $all_users = get_users($args); 
     $login_data['user_password'] = $password; 
     $login_data['user_login'] = $email; 
     $login_data['remember'] = true; 
     $user_verify = wp_signon($login_data, true); 

     $userID = $user_verify->ID; 

     do_action('wp_login', $email); 
     wp_set_current_user($userID, $email); 
     wp_set_auth_cookie($userID, true, false); 


     if (is_wp_error($user_verify)){ 
      $loginerror = true; 
      $errors['login_error']=__("Error in login",'domain'); 
     } 
     else{ 
      $loginSuccess = true; 
      $_SESSION['login_email']=$email; // Initializing Session 
      if(empty($previous_location)) 
      { 

       wp_safe_redirect(home_url('/portal/')); 
      } 
      else{ 
       wp_safe_redirect($previous_location); 
      } 
      exit(); 
     } 

/portal頁時,我var_dump(is_user_logged_in())返回false。這裏發生了什麼?我做了什麼?

+0

我將我的網站託管在yourdomain.com/folder – Ninja

+0

當您在wp-config.php中將WP_DEBUG設置爲true時,是否會收到任何錯誤,警告信息 – tousif

+0

完全沒有。我沒有錯誤。這是用cookie來實現的嗎?在wp_sigon之後,我得到了用戶詳細信息,並且'is_user_logged_in()'在該頁面中也是true,但是當我移動到其他頁面的網站時,則is_user_logged_in()返回false – Ninja

回答

0

我有同樣的經歷。原來我的自定義註冊機制是錯誤的。我使用$wpdb對象和插入方法添加了具有自定義sql查詢的新用戶。

不知何故,這種方法與後者wp_signon的用法相沖突。如果您還寫有自定義註冊機制,請嘗試回到wp_insert_user方法,然後使用$wpdb->update更新自定義列或任何內容。