我试图仅通过用户ID登录测试站点上的wordpress用户。
我的目标是发送一封电子邮件,提醒他们查看他们最近购买的产品,并希望通过电子邮件链接自动登录并带到审阅表单。
然后,当提交评论时,它会被标记为“经过验证的买家”
我制作了这个用户类和登录测试脚本,以查看是否可以按照我找到的其他文档来工作...
class UserAPI {
private $_id = 0;
private $_wpUser;
public function __construct(int $userID) {
$this->_id = $userID;
$this->_wpUser = get_user_by('id', $this->_id);
}
/*
* Log the user in
*/
public function login() {
wp_clear_auth_cookie();
wp_set_current_user( $this->_id, $this->_wpUser->user_login );
wp_set_auth_cookie( $this->_id, true );
do_action( 'wp_login', $this->_wpUser->user_login, $this->_wpUser );
$currentUser = wp_get_current_user();
if ( is_user_logged_in() ){
echo 'logged in: ' . $currentUser->user_login;
}
else { echo 'not logged in'; }
}
}
// Login test
require('../../includes/userAPI.php');
require('../../../../../wp-load.php');
$userID = 1118; // random user in DB
$userAPI = new \mynamespace\UserAPI($userID);
// Log in user
$userAPI->login();
login()的输出显示当前用户是我从现有数据库中选择作为测试的人。
但是,如果在执行此操作后加载了wordpress网站,则该用户尚未登录。
我什至证实了这一点...
add_action('init', function() {
$currentUser = wp_get_current_user();
if ( is_user_logged_in() ){
echo 'logged in: ' . $currentUser->user_login;
}
else { echo 'not logged in'; }
});
加载网站时,测试代码显示“未登录”
因此,我在一个浏览器中打开了按ID登录测试脚本,在另一个选项卡中打开了wordpress主页。
如何解决此问题,以便在我运行登录脚本时,转到wordpress主页选项卡并刷新它-记住登录名,并且该站点加载有登录用户?
谢谢
答案 0 :(得分:0)
问题是在本地使用xampp时出现网址不匹配
有时浏览器或xampp会将我的显式调用更改为
http://127.0.0.1/devsite/
到...
http://localhost/devsite/
我想那是在破坏登录Cookie。