2014-03-30 22 views
1

我試圖在外部api文件中檢查用戶的身份驗證。我包括WP-load.php文件,我收到以下錯誤:如何驗證外部腳本中的wordpress用戶


Fatal error: Call to a member function add_query_var() on a non-object in /home/USERNAME/public_html/DOMAIN/wp-includes/rewrite.php on line 1834

這裏是我的代碼:

function authentication ($user, $pass){ 

//Include wordpress files 
require_once('/home/USERNAME/public_html/DOMAIN/wp-load.php'); 


if(empty($user) || empty($pass)){ 

    return false; 

} else { 
$auth = mysql_query("SELECT ID, user_login, user_pass FROM PREFIX_users WHERE user_login = '".$user."'"); 
$row = mysql_fetch_array($auth); 
$uid = $row['ID']; 


$status = false; 

$auth = wp_authenticate($uid, $pass); 

if(is_wp_error($auth)) {   
    $status = false; 
} else { 
    $status = true; 
} 
return $status; 
} 

}

我刪除了用戶名,域和從這個前綴。

回答

4

對於其他任何發現這一點的人,我只需添加一些全局變量,並將字符串用戶名傳遞給wp_authenticate而不是用戶標識,最後包含wp-blog-header.php而不是wp-load.php。這裏是我的最終代碼:

function authentication ($user, $pass){ 
    global $wp, $wp_rewrite, $wp_the_query, $wp_query; 

    if(empty($user) || empty($pass)){ 
    return false; 
    } else { 
    require_once('/home/USERNAME/public_html/DOMAIN/wp-blog-header.php'); 
    $status = false; 
    $auth = wp_authenticate($user, $pass); 
    if(is_wp_error($auth)) {  
     $status = false; 
    } else { 
     $status = true; 
    } 
    return $status; 
    } 
}