如何在外部脚本中验证wordpress用户

时间:2014-03-30 19:49:17

标签: php wordpress

我正在尝试在外部api文件中检查用户的身份验证。我包含了wp-load.php文件,我收到以下错误:

  


  致命错误:在 /home/USERNAME/public_html/DOMAIN/wp-includes/rewrite.php 行上的非对象上调用成员函数add_query_var()< b> 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; 
}   

}

我从中删除了用户名,域名和前缀。

1 个答案:

答案 0 :(得分:5)

对于其他发现这一点的人,我只需添加一些全局变量,并将字符串用户名传递给wp_authenticate而不是用户ID,最后包含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;
  } 
}