Wie kann ich den Benutzernamen (user_login) programmatisch ändern?

15

Wie im Titel, wie kann man die Benutzeranmeldung programmatisch ändern?

Ich wollte die wp_insert_userFunktion verwenden, aber es scheint, dass beim Aktualisieren des aktuellen Benutzers der Benutzername nicht geändert wird. Soll ich dafür verwenden $wpdb->update? Wenn ja, wie würde der Code zum Ändern des Benutzernamens aussehen? Welche Konsequenzen hätte eine Änderung der Benutzeranmeldung, wenn die WordPress-API keine Änderung der Benutzernamen zulässt?

Mateusz Hajdziony
quelle

Antworten:

21

Ich war mir sicher, dass die wp_update_userFunktion dies tun sollte ( http://codex.wordpress.org/Function_Reference/wp_update_user ).

Es bekommt sogar user_login als Parameter, aber es sieht so aus, als würde es ignoriert, wenn Sie diesen Parameter setzen.

Dieser Code sieht also in Ordnung aus, funktioniert aber nicht wie gewünscht :(:

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

Sie müssen eine benutzerdefinierte SQL-Abfrage aufrufen, um user_login zu aktualisieren:

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

Es funktioniert einwandfrei und ich glaube nicht, dass es schwerwiegende Konsequenzen hat, da WP die Benutzer-ID verwendet, um dem Benutzer Beiträge / Kommentare (und so weiter) zuzuweisen.

Das einzige Problem, an das ich denken kann, ist, dass dieser Benutzer nach der Änderung von user_login abgemeldet wird, wenn er gerade angemeldet ist.

Krzysiek Dróżdż
quelle
1
Nicht wirklich, überprüfen Sie die Hinweise für diese Funktion (sowie den Code): Bitte beachten Sie, dass wir die Benutzernamen nicht über diese Funktion ändern können. Tatsächlich können die Benutzernamen auch nicht über das Admin-Dashboard geändert werden, da WordPress dies nicht zulässt bleibe auf dem Laufenden.
Mateusz Hajdziony
Danke, das funktioniert super! Keine Sorge um angemeldete Benutzer, da ich die Änderung des Benutzernamens nur für angemeldete Benutzer zulasse (Aktivierung des Kontos per E-Mail).
Mateusz Hajdziony
@pogoking Möglicherweise möchten Sie berücksichtigen, dass Benutzer- oder Autoren-Permalinks möglicherweise beschädigt werden, nachdem Sie Benutzern ermöglicht haben, ihre Benutzernamen zu ändern, wenn hübsche Permalinks aktiviert sind. Daher müssen Sie möglicherweise Maßnahmen ergreifen, um dies zu kompensieren.
Ahmad M
1
ich musste globales $ wpdb hinzufügen; damit es funktioniert
Mau
4
Alte Post, aber im zu tun dies selbst sucht, wäre es wert sein , einen anderen Benutzer mit dem gleichen user_login auf Ihrer Website als Login - Formular registriert ist nicht nutzt offensichtlich diesen Wert Konten und Spiel Passwort - Hashes zu finden
haxxxton
4

Sie können den Benutzernamen auch über die SQL-Abfrage ändern. Sobald dies erledigt ist, funktionieren alle Permalinks und anderen Funktionen einwandfrei.

Mohit Aneja
quelle