Comment changer de nom d'utilisateur par programmation (user_login)?

15

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

Je voulais utiliser la wp_insert_userfonction, mais il semble que lors de la mise à jour de l'utilisateur actuel, cela ne change pas son nom d'utilisateur. Dois-je utiliser $wpdb->updatepour cela? Si oui, à quoi ressemblerait le code pour changer le nom d'utilisateur? Quelles conséquences aurait la modification de la connexion utilisateur, étant donné que l'API WordPress ne permet pas de modifier les noms d'utilisateur?

Mateusz Hajdziony
la source

Réponses:

21

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

Il obtient même user_login comme paramètre, mais il semble qu'il l'ignore lorsque vous définissez ce paramètre.

Donc, ce code semble OK, mais il ne fonctionne pas comme vous le souhaitez :(:

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 graves conséquences, car WP utilise l'ID 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 sera déconnecté après le changement de user_login.

Krzysiek Dróżdż
la source
1
Pas vraiment, vérifiez les notes de cette fonction (ainsi que le code): veuillez noter que nous ne pouvons pas modifier les noms d'utilisateur via cette fonction, en fait, les noms d'utilisateur ne peuvent pas être modifiés à partir du tableau de bord d'administration également puisque WordPress ne permet pas aux noms d'utilisateur de être mis à jour.
Mateusz Hajdziony
Merci, ça marche super! Pas de soucis pour les utilisateurs connectés, car je n'autorise le changement de nom d'utilisateur que pour les utilisateurs déconnectés (activation du compte par e-mail).
Mateusz Hajdziony
@pogoking Une chose que vous voudrez peut-être considérer est que les permaliens utilisateur ou auteur peuvent être rompus après avoir permis aux utilisateurs de changer leurs noms d'utilisateur si de jolis permaliens sont activés, vous devrez donc peut-être prendre des mesures pour compenser cela.
Ahmad M
1
j'avais besoin d'ajouter $ wpdb global; pour le faire fonctionner
Mau
4
Ancien message, mais je cherche à le faire moi-même, il vaut la peine de vérifier qu'il n'y a pas un autre utilisateur avec le même user_login enregistré sur votre site car le formulaire de connexion utilise évidemment cette valeur pour trouver des comptes et faire correspondre les hachages de mot de passe
haxxxton
4

Vous pouvez également envisager de modifier le nom_utilisateur_nique via la requête SQL. Une fois cela fait, tous les permaliens et autres fonctions fonctionneront parfaitement.

Mohit Aneja
la source