web-dev-qa-db-fra.com

Comment changer le mot de passe wordpress sans se déconnecter (besoin d'un plugin)

J'ai besoin de changer WP mot de passe sans profil de déconnexion. Lorsque j'utilise wp_set_password ($ password, $ user_ID), j'ai un problème de déconnexion.

3
Ad2

Vous pouvez essayer ci-dessous le code. Il ne vous déconnectera pas après avoir changé de mot de passe.

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

Prendre plaisir ;)

4
Mayur Chauhan

Si vous modifiez le mot de passe de l'utilisateur actuellement connecté, il vous déconnectera. Vous devez vous reconnecter:

// 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);

Notez que puisque vous définissez un nouveau cookie de connexion (c.-à-d. En modifiant les en-têtes), vous devez exécuter ce code avant toute autre sortie (HTML ou echos).

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
Dragi Postolovski

Je n'ai pas d'exemple de travail, seulement des astuces pour réfléchir à ce sujet. La fonction pour définir un nouveau mot de passe via la fonction de base est correcte. Mais si vous utilisez cette fonction sur la page de mise à jour de l'utilisateur, cet utilisateur sera automatiquement déconnecté, car il supprime le cache de l'utilisateur connecté.

Après la déconnexion, pouvez-vous vous connecter à wp et créer un nouveau login? Vous devez le faire avant que rien ne soit envoyé via des "en-têtes".

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

Pensez également au cookie de connexion - wp_set_auth_cookie ! Vous pouvez également supprimer le cache actuel de l'utilisateur - wp_cache_delete() .

Peut-être que cette question et ses réponses vous aident, même sujet.

0
bueltge