So ändern Sie das Kennwort eines Benutzers programmgesteuert

16

Ich versuche, eine völlig andere Profilseite zu erstellen (nicht die von Wordpress bereitgestellte), da das Layout und das Verhalten der Standardprofilseite für die Benutzer zu "Wordpress" ist. Jetzt ist es mir gelungen, eine Seite zu präsentieren, auf der Benutzer-Metadaten wie Vorname, Nachname, Ort, Postleitzahl usw. geändert werden können.

Was mich nun ratlos gemacht hat, ist das Ändern des Passworts des Benutzers. Gibt es eine integrierte WordPress-Funktion, z. B. change_user_password ($ user_id, $ new_password)? Ich bin überrascht, dass ich nichts suchen kann, was dies tut.

Schlimmer noch, ich mache eine UPDATE wp_users SET user_pass = md5($new_password) WHERE ID = $user_id, aber ich wäre wirklich erstaunt, wenn es für diese keine Funktion gibt.

Ardee Aram
quelle
1
md5für Passwörter in WordPress ist veraltet (aber immer noch abwärtskompatibel - das nächste Mal, wenn sich Benutzer anmelden, wird das Passwort erneut gehasht und gespeichert). Es ist besser, die API zu durchlaufen, damit das aktuelle und komplexere Hashing-Schema verwendet wird.
Rarst
Ja, das schätze ich auch. Die in der Datenbank gespeicherten Passwörter stimmen nicht mit einem MD5 mit dem eingehenden Passwort überein. Also ja, es ist in der Tat aufgewärmt.
Ardee Aram

Antworten:

22
wp_set_password( $password, $user_id );

Siehe Referenz für Details.

Rarst
quelle
1
Ich habe im Wesentlichen dafür gestimmt, weil dies zu einer einzelnen SQL-Abfrage führt. Hervorragend, wenn das Passwort alles ist, was Sie aktualisieren möchten. wp_update_userführt dazu, dass ungefähr 14 Abfragen ausgeführt werden.
John
11

Ein einfacher wp_update_user(array('ID' => $userid, 'user_pass' => 'myNeWpaSSword'))Wille tut alles für Sie - wp_update_user()(Codex) .

Nebenbei bemerkt: Kennen Sie das Thema Mein Login (Wordpress Plugin) ? Es kann Ihnen eine Front-End-Seitenprofilseite zur Verfügung stellen.

Wyrfel
quelle