Я пытаюсь войти в систему пользователя 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'; }
});
Когда я загружаю сайт, тестовый код показывает "не авторизован"
Итак, у меня открыт скрипт проверки входа в систему по идентификатору в одном браузере и домашняя страница wordpress в другой вкладке.
Как я могу это исправить, чтобы при запуске сценария входа в систему перейти на вкладку домашней страницы wordpress и обновить его - имя входа запоминается, и сайт загружается, когда пользователь вошел в систему?
Спасибо