ログアウトプロファイルなしでWPパスワードを変更する必要があります。 wp_set_password($ password、$ user_ID)を使用すると、ログアウトに問題があります。
あなたは以下のコードを試すことができます。パスワードを変更してもログアウトしません。
$userdata['ID'] = 1; //user ID
$userdata['user_pass'] = 'new_password';
wp_update_user( $userdata );
楽しい ;)
現在ログインしているユーザーのパスワードを変更している場合は、ログアウトします。もう一度ログインする必要があります。
// Get current logged-in user.
$user = wp_get_current_user();
// Change password.
wp_set_password($new_password, $user->ID);
// Log-in again.
wp_set_auth_cookie($user->ID);
wp_set_current_user($user->ID);
do_action('wp_login', $user->user_login, $user);
新しいログインCookieを設定している(つまりヘッダーを変更している)ため、他の出力(HTMLまたはエコー)の前にこのコードを実行する必要があります。
function change_client_password() {
$current_user = $_POST['current_user'];
$current_password = $_POST['current_password'];
$new_password = $_POST['new_password'];
$confirm_password = $_POST['confirm_password'];
$user = get_user_by( 'ID', $current_user );
$result = wp_check_password( $current_password, $user->data->user_pass, $current_user );
if ( $result ) {
if ( $new_password == $confirm_password ) {
wp_set_password( $new_password, $current_user );
wp_set_auth_cookie ( $current_user );
wp_set_current_user( $current_user );
do_action('wp_login', $user->user_login, $user );
echo 'Your new password is changed.';
} else {
echo 'Your current password is correct, but the new and confirm passwords do not match.';
}
} else {
echo 'Your current password is incorrect.';
}
wp_die();
}
実用的な例はありませんが、このトピックについて考えるためのヒントだけがあります。コアの機能を介して新しいパスワードを設定する機能は正しいです。しかし、あなたがユーザー更新ページでこの機能を使用しているならば、それはログインユーザーのキャッシュを削除しているのでユーザーは自動的にログアウトされます。
ログアウト後、wp
をフックして新しいログインを作成できますか。何かを 'ヘッダ'経由で送信する前に、これをしなければなりません。
`add_action( 'wp', 'your_login' );`
ログインのクッキーについても考えてください - wp_set_auth_cookie
!また、ユーザーの現在のキャッシュを削除することもできます - wp_cache_delete()
。
たぶん、この 質問 そして彼の答えはあなたを助ける、同じトピック。