если вы все еще ищете ответ по этой теме: я нашел решение!
короче говоря, после обновления пароля очистите данные и выйдите из системы
(как вы сделали)
wp_cache_delete($user_ID,'users');
wp_cache_delete($user->user_login,'userlogins');
wp_logout();
пользователь вышел из системы
затем
сделать «перенаправление» на новую страницу для повторного автоматического входа
Поймать звонок на эту страницу через add_action( 'wp', 'auto_login' );
(мы должны сделать это, прежде чем что-либо отправлять через «заголовки»)
Функция auto_login может обработать ваш запрос на автоматический вход в систему данного пользователя. (Через параметры $ _GET)
Поэтому, когда я перенаправляю на новую страницу, я передаю два параметра
user_id (пользователь для входа)
секретный ключ (для безопасности)
$key = password_hash('[some secret ]' . $user_id, PASSWORD_DEFAULT);
wp_redirect( get_permalink( $to['fl_autologin'] ) . "/?p=" . urlencode( $key ) . "&z=" . $user_id );
exit;
тогда в функции auto_login я ищу эти два параметра
расшифруйте секретный ключ, чтобы проверить, является ли это окей
if ( $_GET['z'] && password_verify( '[some secret]' . $_GET['z'], urldecode( $_GET['p'] ) )) {
если так,
затем войдите в систему данного пользователя
$user = get_user_by( 'id', $_GET['z'] );
$user_id = $user->ID;
wp_set_current_user( $user_id, $user->user_login );
wp_set_auth_cookie( $user_id );
do_action( 'wp_login', $user->user_login );
сделать еще несколько проверок безопасности на этом,
как user_id должен быть действительным и т. д.
если все в порядке,
затем вы можете снова перенаправить его на домашнюю страницу
надеюсь, это поможет вашей проблеме