web-dev-qa-db-fra.com

Comment changer le nom d'utilisateur par programme (user_login)?

Comme dans le titre, comment modifier par programmation les informations de connexion de l'utilisateur?

Je voulais utiliser la fonction wp_insert_user, mais il semble que lors de la mise à jour de l'utilisateur actuel, cela ne change pas son nom d'utilisateur. Devrais-je utiliser $wpdb->update pour cela? Si oui, à quoi ressemblerait le code pour changer de nom d'utilisateur? Quelles seraient les conséquences d'un changement de connexion d'utilisateur, étant donné que l'API WordPress ne permet pas de changer de nom d'utilisateur?

14
Mateusz Hajdziony

J'étais sûr que la fonction wp_update_user devrait le faire ( http://codex.wordpress.org/Function_Reference/wp_update_user ).

Il obtient même user_login en tant que paramètre, mais il semblerait qu'il l'ignore lorsque vous définissez ce paramètre.

Donc, ce code a l'air correct, mais il ne fonctionne pas comme vous le souhaiteriez :(:

wp_update_user( array ( 'ID' => $user_id, 'user_login' => $new_login ) ) ;

Vous devez appeler une requête SQL personnalisée pour mettre à jour user_login:

$wpdb->update($wpdb->users, array('user_login' => $new_user_login), array('ID' => $user_id));

Cela fonctionne bien et je ne pense pas que cela ait de conséquences graves, car WP utilise l'identifiant de l'utilisateur pour attribuer des publications/commentaires (et ainsi de suite) à l'utilisateur.

Le seul problème auquel je peux penser est que, lorsque cet utilisateur est actuellement connecté, il le sera après le changement de user_login.

21
Krzysiek Dróżdż

Vous pouvez également envisager de changer le nom d'utilisateur (user_nicename) via la requête SQL. Une fois que cela est fait, tous les permaliens et autres fonctions fonctionneront parfaitement.

4
Mohit Aneja