Существует ряд встроенных функций WordPress, которые могут оказаться полезными в том, что вы пытаетесь сделать. Думаю, наиболее полезной будет функция wp_set_auth_cookie
(см .: https://developer.wordpress.org/reference/functions/wp_set_auth_cookie/).
Вы можете попробовать что-то вроде:
wp_clear_auth_cookie();
$user = get_user_by('login', $username);
$user_id = $user->ID;
wp_set_auth_cookie($user_id);
wp_set_current_user($user_id);
или что-то в этом роде.
Вот некоторые другие доступные вам функции пользователя / cookie / сеанса:
В wp-includes / pluggable. php файл
wp_validate_auth_cookie
- Проверяет аутентификацию Cook ie.
wp_generate_auth_cookie
- Создает аутентификацию Cook ie contents.
wp_parse_auth_cookie
- разбирает Cook ie на его компоненты.
wp_set_auth_cookie
- устанавливает файлы cookie аутентификации на основе идентификатора пользователя.
wp_clear_auth_cookie
- Удаляет все файлы cookie, связанные с аутентификацией.
wp_get_current_user
- Получить текущего пользователя объект.
wp_set_current_user
- Изменяет текущего пользователя по ID или имени.
В wp-includes /user.php файл
wp_get_session_token
- Re получить токен текущего сеанса из logged_in cook ie. wp_get_all_sessions
- Получить список сеансов для текущего пользователя. wp_destroy_current_session
- Удалить токен текущего сеанса из база данных. wp_destroy_other_sessions
- Удалить все токены сеанса, кроме текущего пользователя для базы данных. wp_destroy_all_sessions
- Удалить все токены сеанса для текущего пользователя из базы данных.
Существует также отличный плагин (длиной всего один файл), который выполняет подобные вещи, называемые Переключение пользователей (см.: https://wordpress.org/plugins/user-switching/). Вы также можете найти очень полезный код, исследуя этот файл.