JavaScript işlevi wp_attempt_focus
bu soruna neden oluyor. İşlev, sayfa yüklendikten kısa bir süre sonra etkinleşir, formu temizler ve buna odaklanır ve kullanıcıları giriş bilgilerini manuel olarak girmeye zorlar.
Chrome, JS işlevi alanı temizlemeden yalnızca milisaniye kadar önce kullanıcı adını ve şifreyi otomatik olarak dolduruyor. Chrome, alanları gerçekten boş olsa bile, sarı renkli doldurulmuş alanları görüntüleyerek değişiklikleri düzgün bir şekilde almaz.
Otomatik odaklama işlevini takdir etsem de, herkesin formun otomatik olarak temizlenmesini istemesinin iyi bir nedeni olduğunu düşünemiyorum.
Kaynak
Ne yazık ki, işlev wp-login.php
913-930 satırlarında (WordPress 4.0) sabit kodlanmıştır . wp-login.php
Gelecekteki herhangi bir WordPress güncellemesinin üzerine yazılabileceğinden , dosyayı tamamen değiştirmek kötü bir fikirdir. Bu yüzden biraz 'hack''e başvurmamız gerekecek.
Kolay düzeltme
wp_attempt_focus
Form hata yok ise fonksiyon denir. Şanslıyız - hata kontrolü PHP ile yapılır. Bu, WP eylemlerini kullanarak bir form hatasını doğru zamanda sararak işlevin tetiklenmesini önleyebileceğimiz anlamına gelir. login_form
Eylem her zaman hata işlendikten sonra , JS çağrısından hemen önce başladığı için eylemi seçtim . Temanızın functions.php
(veya eklenti dosyasına) aşağıdaki kodu ekleyin :
add_action("login_form", "kill_wp_attempt_focus");
function kill_wp_attempt_focus() {
global $error;
$error = TRUE;
}
Keskin düzeltme
Yukarıdaki düzeltme, işlevin tamamen çalışmasını önler, yani uygun otomatik odaklamayı da elde edemezsiniz. Etrafında başka bir yol daha var: Geeklab'danob_start
esinlenerek HTML çıktısını arabelleğe almak ve değiştirmek . Arabelleğe alma, kodun belirli bölümlerini - bu durumda otomatik temizlenen kısmı - kaldırmamızı sağlar . Yine de tampon yıkamayı unutmayın.d.value = ''
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();
}