Setelah mencari selama beberapa hari dan membaca utas berusia 2 tahun, saya mengalami kesulitan menemukan solusi untuk masalah pengguna login hanya melalui email.
Awalnya saya senang melihat WP_Email_Login hanya untuk mengetahui Anda masih dapat menggunakan nama pengguna Anda untuk login. Saya tidak yakin bagaimana cara menulis ini sebagai plugin. Ide saya adalah mengganti fungsi register_new_user. Saya tidak melihat ini pada daftar fungsi "pluggable". Bisakah saya menggunakan filter / tindakan untuk mencapai ini?
Saya menyadari itu tidak modis untuk mengedit file inti jadi saya berharap ada solusi di luar sana namun jika tidak ada saya akan mengambil peluang saya. Di baris pertama fungsi "register_new_user" di wp-login.php saya dapat menambahkan:
$nickname_variable(??) = $user_login // set the nickname to the username
$user_login = $user_email; // set the user_login/username to the email address
Ini berfungsi dengan baik karena WordPress tidak memungkinkan orang untuk mengubah nama pengguna mereka. Di Layar Registrasi (formulir) ia meminta Nama Pengguna & Email; Saya ingin mengatur Nama Pengguna ke variabel Nama Panggilan (jika seseorang dapat memberi tahu saya nama variabel nama panggilan atau di mana itu ditetapkan selama pendaftaran yang akan dihargai).
Bersulang,
Smith
Jawaban:
Pembaruan: Saya telah membuat plugin untuk login, registrasi dan mengambil kata sandi dengan email. https://wordpress.org/plugins/smart-wp-login/
Jawaban singkatnya, Anda dapat mengonfigurasi WordPress untuk masuk dengan email.
Tiga langkah:
Satu catatan:
Hapus fungsi otentikasi standar WordPress.
WordPress menggunakan filter " otentikasi " untuk melakukan validasi tambahan saat login pengguna.
Tambahkan fungsi otentikasi khusus
Ubah teks "Nama pengguna" di wp-login.php menjadi "Email"
Kita dapat menggunakan filter gettext untuk mengubah teks "Nama pengguna" menjadi "Email" tanpa mengedit file inti.
Saya juga telah menulis artikel terperinci di blog saya http://www.thebinary.in/blog/wordpress-login-using-email/
sumber
Mungkin saja, Anda harus mengubah filter untuk namanya.
Alternatif adalah plugin, di sana Anda temukan melalui Google oder di plugin repo; mungkin plugin ini .
sumber
Menggunakan kode di atas:
Yang harus kami lakukan adalah memeriksa apakah nama pengguna yang disediakan setidaknya tampak seperti email dan jika tidak menyabot nama pengguna.
sumber
'@'
nama pengguna, Wordpress memiliki fungsisanitize_email('email¬!"@business_com'); // Returns nothing
sudah masuk
WP-CORE
!sekarang wordpress sudah memungkinkan untuk mendaftarkan EMAIL sebagai nama pengguna. tetapi jika Anda berbicara tentang pengguna yang sudah terdaftar, cobalah jawaban yang terdaftar.
sumber
Sedikit modifikasi pada kode di atas harus menjadi semua yang diperlukan untuk menciptakan solusi yang elegan. The dokumentasi untuk hook mengotentikasi menyatakan bahwa baik
WP_User
objek atauWP_Error
objek harus dikembalikan.The source code untuk fungsi wp_authenticate_username_password berjalan melalui beberapa pemeriksaan cukup sederhana; kami hanya bisa meniru cara pemeriksaan itu dilakukan, dan membuat
WP_Error
objek baru untuk berurusan dengan alamat email. Sebagai alternatif, kita bahkan dapat mendongkrakwp_authenticate_username_password
kode dan memodifikasinya jika kita mau, meskipun itu tampaknya tidak perlu kecuali Anda benar-benar ingin menyesuaikan fungsi berfungsi. Kode di bawah ini seharusnya melakukan trik: (Meskipun saya belum mengujinya sendiri ...)sumber
Ada plugin untuk itu:
Paksa Login Email
https://br.wordpress.org/plugins/force-email-login/
Ini juga ada di Github: https://github.com/miya0001/force-email-login
sumber