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?

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.