Вход в Wordpress Только для пользователей с использованием идентификатора пользователя - проблема с входом в систему - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь войти в систему пользователя 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 и обновить его - имя входа запоминается, и сайт загружается, когда пользователь вошел в систему?

Спасибо

1 Ответ

0 голосов
/ 10 мая 2019

Проблема заключалась в несовпадении URL при локальной работе с xampp

, иногда браузер или xampp меняли мой вызов explict на

http://127.0.0.1/devsite/

на ...

http://localhost/devsite/

Я предполагаю, что это испортило файлы cookie для входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...