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.
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 ;)
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).
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();
}
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.