Come cambiare la password di un utente programmaticamente

21 feb 2011, 03:53:08
Visualizzazioni: 39.1K
Voti: 23

Sto cercando di creare una pagina del profilo completamente diversa (non quella fornita da WordPress), poiché il layout e l'aspetto della pagina del profilo predefinita è troppo "WordPress" per gli utenti. Sono riuscito a presentare una pagina che può modificare i metadati dell'utente come nome, cognome, città, codice postale, ecc.

Ora mi sono bloccato sul cambio della password dell'utente. Esiste una funzione WordPress incorporata, tipo change_user_password($user_id, $new_password)? Sono sorpreso di non riuscire a trovare nulla che faccia questo.

Nel peggiore dei casi sto facendo un UPDATE wp_users SET user_pass = md5($new_password) WHERE ID = $user_id, ma sarei davvero stupito se non esistesse una funzione per questo.

2
Commenti

md5 per le password in WordPress è deprecato (ma ancora retrocompatibile - al prossimo accesso dell'utente la password verrà ri-hashata e salvata nuovamente). È meglio utilizzare l'API in modo da sfruttare lo schema di hashing corrente e più complesso.

Rarst Rarst
21 feb 2011 12:27:43

Sì, anche questa è la mia ipotesi. Le password memorizzate nel database non corrispondono a un MD5 con la password in ingresso. Quindi sì, vengono effettivamente ri-hashate.

Ardee Aram Ardee Aram
28 feb 2011 09:14:21
Tutte le risposte alla domanda 2
1
39
wp_set_password( $password, $user_id );

Vedi riferimento per i dettagli.

21 feb 2011 10:49:01
Commenti

Ho votato a favore principalmente perché questo metodo comporta una singola query SQL. Eccellente, se la password è tutto ciò che vuoi aggiornare. wp_update_user comporta l'esecuzione di circa 14 query.

John John
16 lug 2012 22:31:23
0
17

Un semplice wp_update_user(array('ID' => $userid, 'user_pass' => 'myNeWpaSSword')) farà tutto per te - wp_update_user() (Codex).

Come nota a margine: sei a conoscenza del Theme My Login (Plugin WordPress)? Può fornirti una pagina profilo front-end.

21 feb 2011 04:12:39