Fungsi JavaScript wp_attempt_focus
menyebabkan masalah ini. Fungsi ini akan menyala tidak lama setelah pemuatan halaman, membersihkan formulir dan memfokuskannya, memaksa pengguna untuk memasukkan informasi login mereka secara manual.
Chrome mengisi nama pengguna dan kata sandi secara otomatis, hanya milidetik sebelum fungsi JS menghapus bidang. Chrome tidak menerima perubahan dengan benar, menampilkan bidang berwarna kuning yang diisi meskipun bidang tersebut benar-benar kosong.
Meskipun saya menghargai fungsionalitas autofokus, saya tidak dapat memikirkan alasan yang baik mengapa seseorang ingin formulir tersebut dihapus secara otomatis.
Sumber
Sayangnya, fungsi tersebut telah di-hardcode wp-login.php
pada baris 913-930 (WordPress 4.0). Mengubah wp-login.php
file sama sekali adalah ide yang buruk, karena itu dapat ditimpa dalam pembaruan WordPress yang akan datang. Jadi kita harus melakukan sedikit 'peretasan'.
Memperbaiki mudah
The wp_attempt_focus
fungsi disebut jika bentuk tidak memiliki kesalahan. Kami beruntung - pemeriksaan kesalahan dilakukan melalui PHP. Ini berarti kita bisa dengan mudah mencegah fungsi menembak dengan memalsukan kesalahan formulir pada waktu yang tepat menggunakan tindakan WP. Saya memilih login_form
tindakan karena tindakan selalu menyala setelah penanganan kesalahan, tepat sebelum panggilan JS. Tambahkan kode berikut ke tema functions.php
(atau file plugin) Anda:
add_action("login_form", "kill_wp_attempt_focus");
function kill_wp_attempt_focus() {
global $error;
$error = TRUE;
}
Memperbaiki peretasan
Perbaikan di atas mencegah fungsi dari menembak sama sekali, yang berarti Anda tidak akan mendapatkan autofokus yang tepat juga. Ada cara lain di sekitarnya: buffering output HTML dan memodifikasinya via ob_start
, seperti yang terinspirasi oleh Geeklab . Buffering memungkinkan kita untuk menghapus bagian kode tertentu - dalam hal ini, bagian autoclear d.value = ''
. Jangan lupa untuk membersihkan buffer.
add_action("login_form", "kill_wp_attempt_focus_start");
function kill_wp_attempt_focus_start() {
ob_start("kill_wp_attempt_focus_replace");
}
function kill_wp_attempt_focus_replace($html) {
return preg_replace("/d.value = '';/", "", $html);
}
add_action("login_footer", "kill_wp_attempt_focus_end");
function kill_wp_attempt_focus_end() {
ob_end_flush();
}
Saya punya masalah ini juga. Mematikan plugin "WP-SpamShield" oleh Scott Allen dan semuanya mulai bekerja lagi.
sumber
Kata sandi saya hanya kosong / nol jadi saya mencoba mengubahnya ke sesuatu yang lain, seperti "1234". Menambahkan ruang dan menghapusnya tidak berfungsi dan tidak menonaktifkan JS. Juga mencoba peramban yang berbeda, jadi apakah hanya di Chrome?
Apa yang saya lakukan adalah saya mengubah hash kata sandi di database dan itu berhasil.
wp_users.user_pass
.kata sandi saya dalam
1234
BCrypted:$2a$06$x4lljZOw0Cfuj7jy6qsdp./iX34gaDUMXQIQob4VIHLXQ5yI92RjC
http://bcrypthashgenerator.apphb.com/?PlainText=1234
sumber