web-dev-qa-db-ja.com

ログアウトせずにワードプレスのパスワードを変更する方法(プラグインが必要)

ログアウトプロファイルなしでWPパスワードを変更する必要があります。 wp_set_password($ password、$ user_ID)を使用すると、ログアウトに問題があります。

3
Ad2

あなたは以下のコードを試すことができます。パスワードを変更してもログアウトしません。

$userdata['ID'] = 1; //user ID
$userdata['user_pass'] = 'new_password';
wp_update_user( $userdata );

楽しい ;)

4
Mayur Chauhan

現在ログインしているユーザーのパスワードを変更している場合は、ログアウトします。もう一度ログインする必要があります。

// 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またはエコー)の前にこのコードを実行する必要があります。

3
liviucmg
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();
}
0

実用的な例はありませんが、このトピックについて考えるためのヒントだけがあります。コアの機能を介して新しいパスワードを設定する機能は正しいです。しかし、あなたがユーザー更新ページでこの機能を使用しているならば、それはログインユーザーのキャッシュを削除しているのでユーザーは自動的にログアウトされます。

ログアウト後、wpをフックして新しいログインを作成できますか。何かを 'ヘッダ'経由で送信する前に、これをしなければなりません。

`add_action( 'wp', 'your_login' );`

ログインのクッキーについても考えてください - wp_set_auth_cookie !また、ユーザーの現在のキャッシュを削除することもできます - wp_cache_delete()

たぶん、この 質問 そして彼の答えはあなたを助ける、同じトピック。

0
bueltge