Почему is_user_logged_in () возвращает false после изменения пароля пользователя на лицевой стороне?

Я написал пользовательскую страницу пароля смены интерфейса. В верхней части страницы у меня есть этот фрагмент кода:

<?php if ( !is_user_logged_in() ) { auth_redirect(); } ?> 

После того, как запрос обработан и пароль пользователя изменен, страница рисует, но триггеры следующей страницы is_user_logged_in() возвращают значение false и отправляют пользователя на страницу входа в систему … После просмотра кода для is_user_logged_in() Предполагая, что что-то недействительно в cookie пользователя, но я понятия не имею, что.

Любые указатели?

'wp-postpass_' . COOKIEHASH cookie для входа называется 'wp-postpass_' . COOKIEHASH 'wp-postpass_' . COOKIEHASH где COOKIEHASH либо определяется в вашем wp-config.php либо в функции wp-includes/default-constants.php function wp_cookie_constants() .

Значение:

 $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ) 

Всякий раз, когда пароль изменяется, cookie больше не соответствует, а is_user_logged_in() должен возвращать FALSE .

Отправьте своих пользователей на экран входа в систему сразу же после смены пароля.
Или выполните аутентификацию пользователя после сохранения пароля:

 require_once ABSPATH . 'wp-includes/class-phpass.php'; $hasher = new PasswordHash( 8, true ); $expire = apply_filters( 'post_password_expires', time() + 10 * DAY_IN_SECONDS ); setcookie( 'wp-postpass_' . COOKIEHASH, $hasher->HashPassword( wp_unslash( $_POST['post_password'] ) ), $expire, COOKIEPATH ); 

Чувствуется странным ответом на мой собственный вопрос (должен ли это быть новый вопрос?), Но после прочтения этого вопроса я нашел следующий фрагмент кода, который изменил поведение:

 //action hook for plugins and extra fields saving do_action('edit_user_profile_update', $current_user->ID); wp_redirect( get_permalink() ); exit(); 

Я добавил это после моего вызова wp_update_user() и is_user_logged_in больше не возвращает false. Почему это?