Come modificare programmaticamente nome utente (user_login)?


15

Come nel titolo, come modificare a livello di codice l'accesso dell'utente?

Volevo usare la wp_insert_userfunzione, ma sembra che durante l'aggiornamento dell'utente corrente, non cambi il loro nome utente. Dovrei usare $wpdb->updateper quello? Se sì, come sarebbe il codice per cambiare il nome utente? Quali conseguenze avrebbe la modifica dell'accesso utente, dato che l'API di WordPress non consente la modifica dei nomi utente?

Risposte:


21

Ero sicuro che la wp_update_userfunzione avrebbe dovuto farlo ( http://codex.wordpress.org/Function_Reference/wp_update_user ).

Ottiene persino user_login come parametro, ma sembra che lo ignori quando imposti questo parametro.

Quindi questo codice sembra OK, ma non funziona come vorresti :(:

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

Devi chiamare una query SQL personalizzata per aggiornare user_login:

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

Funziona bene e non credo che abbia conseguenze gravi, perché WP utilizza l'ID utente per assegnare post / commenti (e così via) all'utente.

L'unico problema che mi viene in mente è che quando l'utente è attualmente connesso, verrà disconnesso dopo la modifica di user_login.


1
Non proprio, controlla le note per questa funzione (così come il codice): Nota che non possiamo cambiare i nomi utente attraverso questa funzione, infatti i nomi utente non possono essere cambiati dal pannello di amministrazione e poiché WordPress non consente ai nomi utente di essere aggiornato.
Mateusz Hajdziony,

Grazie, funziona alla grande! Tuttavia, non mi preoccupo degli utenti che hanno effettuato l'accesso, poiché consento solo la modifica del nome utente per gli utenti che hanno effettuato l'accesso (attivazione dell'account tramite e-mail).
Mateusz Hajdziony,

@pogoking Una cosa che potresti prendere in considerazione è che i permalink dell'utente o dell'autore potrebbero essere interrotti dopo aver consentito agli utenti di modificare i loro nomi utente se sono abilitati i permalink graziosi, quindi potresti dover prendere delle misure per compensarlo.
Ahmad M

1
dovevo aggiungere $ wpdb globale; per farlo funzionare
Mau,

4
Vecchio post, ma sto guardando questo da solo, varrebbe la pena verificare che non ci sia un altro utente con lo stesso user_login registrato sul tuo sito come il modulo di login utilizza ovviamente questo valore per trovare account e abbinare hash di password
haxxxton

4

Potresti prendere in considerazione la modifica del nome_utente anche tramite la query SQL. Fatto ciò, tutti i permalink e le altre funzioni funzioneranno perfettamente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.