Bagaimana cara mengubah nama pengguna (user_login) secara terprogram?

15

Seperti pada judul, bagaimana cara mengubah login pengguna secara terprogram?

Saya ingin menggunakan wp_insert_userfungsi, tetapi tampaknya ketika memperbarui pengguna saat ini, itu tidak mengubah nama pengguna mereka. Haruskah saya gunakan $wpdb->updateuntuk itu? Jika ya, seperti apa bentuk kode untuk mengubah nama pengguna? Apa konsekuensi yang akan mengubah login pengguna, mengingat bahwa WordPress API tidak mengizinkan perubahan nama pengguna?

Mateusz Hajdziony
sumber

Jawaban:

21

Saya yakin bahwa wp_update_userfungsi harus melakukan ini ( http://codex.wordpress.org/Function_Reference/wp_update_user ).

Bahkan mendapat user_login sebagai param, tetapi sepertinya mengabaikannya, ketika Anda mengatur param ini.

Jadi kode ini terlihat OK, tetapi tidak berfungsi seperti yang Anda inginkan :(:

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

Anda harus memanggil kueri SQL khusus untuk memperbarui user_login:

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

Ini berfungsi baik dan saya pikir itu tidak memiliki konsekuensi serius, karena WP menggunakan ID pengguna untuk menetapkan posting / komentar (dan sebagainya) kepada pengguna.

Satu-satunya masalah yang bisa saya pikirkan adalah bahwa ketika pengguna ini sedang masuk, ia akan keluar setelah perubahan user_login.

Krzysiek Dróżdż
sumber
1
Tidak juga, periksa catatan untuk fungsi ini (dan juga kodenya): Harap perhatikan bahwa kami tidak dapat mengubah nama pengguna melalui fungsi ini, bahkan nama pengguna tidak dapat diubah dari dasbor admin juga karena WordPress tidak mengizinkan nama pengguna untuk diperbarui.
Mateusz Hajdziony
Terima kasih, itu sangat bagus! Namun, jangan khawatir tentang pengguna yang masuk, karena saya hanya mengizinkan perubahan nama pengguna untuk pengguna yang keluar (aktivasi akun melalui email).
Mateusz Hajdziony
@pogoking Satu hal yang mungkin ingin Anda pertimbangkan adalah bahwa permalink pengguna atau penulis mungkin rusak setelah memungkinkan pengguna mengubah nama pengguna mereka jika permalink cantik diaktifkan, jadi Anda mungkin perlu mengambil langkah-langkah untuk mengimbanginya.
Ahmad M
1
saya perlu menambahkan $ global wpdb; untuk membuatnya bekerja
Mau
4
Posting lama, tetapi saya ingin melakukan ini sendiri, ada baiknya memeriksa tidak ada pengguna lain dengan user_login yang sama terdaftar di situs Anda karena formulir login jelas menggunakan nilai ini untuk menemukan akun dan mencocokkan hash kata sandi
haxxxton
4

Anda mungkin mempertimbangkan untuk mengubah nama pengguna juga melalui kueri SQL. Setelah ini selesai, semua permalink dan fungsi lainnya akan bekerja dengan sempurna.

Mohit Aneja
sumber