Apakah mungkin untuk menghapus bidang nama pengguna dari halaman pendaftaran?
Saya ingin pengguna hanya memasukkan email dan kata sandi mereka.
Pengguna baru harus dibuat berdasarkan dua parameter ini saja.
Apakah itu mungkin dan jika demikian, bagaimana?
user-registration
phpnwordpress
sumber
sumber
Jawaban:
Tentu YA , Anda dapat mencapai ini.
Aturan 1: WordPress membutuhkan nama pengguna. Kami harus memberikan nama pengguna.
Aturan 2: Jangan mengedit kode inti WordPress.
Kami dapat mencapai ini dengan menyembunyikan bidang nama pengguna, mendapatkan email dan menyimpannya sebagai nama pengguna.
Langkah-1: Hapus bidang teks Nama Pengguna
Langkah-2: Hapus kesalahan Nama Pengguna
Langkah-3: Memanipulasi Fungsi Registrasi Latar Belakang.
Masukkan kode di atas dalam file functions.php tema Anda .
Anda juga dapat mengunduh plugin lengkap untuk mencapai ini.
Plugin: https://wordpress.org/plugins/smart-wp-login/
sumber
Langkah 3 di posting Nishant Kumars memposting cek jika
isset($_POST['user_login'])
yang tidak berhasil bagi saya, karena login adalah apa yang sebenarnya ingin kami hapus.Solusi saya adalah sebagai berikut (dalam theme's functions.php), juga sebagai fungsi terpisah, untuk tetap dengan gaya kode wordpress:
sumber
@
dan.
di alamat email sebagai nama pengguna:$_POST['user_login'] = str_replace(array('@', '.'), '_', $_POST['user_email']);
@Nishant Kumar memberikan jawaban yang sempurna dan harus diterima untuk pertanyaan ini. Namun ada kesalahan setelah versi Wordpress 4.0 dirilis. Dari kodeks -
registration_errors
filter di sini memerlukan sedikit modifikasi.Catatan: Seperti yang disebutkan oleh @mcnesium, jika kita benar-benar menyingkirkan bidang nama pengguna (dalam kasus saya saya menggunakan Theme plugin login saya untuk mengganti formulir pendaftaran reguler dan di sana saya baru saja menghapus bidang nama pengguna) maka
$_POST['user_login']
akannull
dan kondisinya tidak akan cocok sama sekali. Sebaiknya hapus itu dari kondisi seperti yang disarankan @mcnesium.sumber
Iterasi pada jawaban @ nishant-kumar, ini vanilla JS, tidak ada skrip js tambahan, 1 langkah, tidak perlu mengedit backend, solusi untuk membuat formulir pendaftaran hanya dengan input email:
Anda hanya perlu menambahkan kode ini di file functions.php Anda (atau di plugin khusus Anda , jika ada)
sumber
user_email is not defined at HTMLInputElement.syncUserName
. Memindahkan bagian "function syncUserName" di dalam fungsi atas menghilangkan kesalahan dan potongan kode bekerja sangat baik. Hanya berkomentar agar orang lain dapat mengalami masalah yang sama. Terima kasih, Gfra54.user_email
var dalam cakupan yang sama. Terima kasih.Saya pikir solusi apa pun untuk permintaan ini akan menjadi 'retas' karena wordpress mensyaratkan bahwa ada nama pengguna untuk semua pengguna terdaftar. Bahkan plugin yang disebutkan di atas kemungkinan besar hanya menemukan nama pengguna melalui alamat email, dan kemudian menggunakan nama pengguna itu untuk masuk ke situs.
Jika Anda baik-baik saja dengan peretasan, berikut adalah konsep yang dapat bekerja:
1) Pra-mengisi bidang nama pengguna dalam formulir pendaftaran Anda dengan nomor unik, menggunakan cap waktu saat ini adalah ide yang baik untuk menghindari duplikat. Anda kemudian akan menyembunyikan bidang ini sehingga pengguna tidak melihatnya di layar saat mengisi formulir mereka.
Jika Anda menggunakan jQuery, Anda dapat menggunakan sesuatu seperti:
Dalam contoh ini, 'form input.username' akan menjadi pemilih jQuery untuk menemukan bidang nama pengguna, Anda perlu memeriksa struktur html pada halaman Anda untuk memastikan pemilih cocok dengan struktur.
2) Gunakan plugin seperti yang disebutkan sebelumnya ( http://wordpress.org/extend/plugins/wp-email-login/ ) untuk memungkinkan pengguna login dengan alamat email mereka.
sumber