web-dev-qa-db-fra.com

Comment se reconnecter automatiquement après avoir changé user_login

J'ai un système de travail par ajax qui change user_login des utilisateurs et voici mon code:

$wpdb->update($wpdb->users, array('user_login' => sanitize_text_field($args['user_login'])), array('ID' => $user_id));

Une fois que user_login a été modifié, WordPress a déconnecté cet utilisateur. J'essaie donc d'utiliser wp_signon après que user_login ait été modifié, mais cela ne fonctionne pas.

2
Trello

J'ai trouvé lors d'une tentative similaire que je devais vider le cache de l'utilisateur pour que la relogine fonctionne (après de nombreux tests frustrants!):

wp_cache_delete($user_id, 'users');
wp_cache_delete($old_user_login, 'userlogins'); // maybe unnecessary?
$creds = array('user_login' => $user_login, 'user_password' => $user_password, 'remember' => true);
wp_signon($creds);

Remarque: pour que cela fonctionne, vous devrez peut-être aussi demander à l'utilisateur de changer son mot de passe en même temps afin de pouvoir renseigner le champ $user_password avec un mot de passe en texte brut à fournir à wp_signon

1
majick