我正在尝试在外部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;
}
}
我从中删除了用户名,域名和前缀。
答案 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;
}
}