Cum să dezactivezi autocompletarea pe pagina wp-login.php
Se pare că nu există o metodă simplă de a adăuga autocomplete="off" la câmpul de parolă pe pagina de login WordPress fără a edita direct fișierul wp-login.php.
Există vreo soluție pe care o omit? Nu doresc să modific fișierele core.
Singura ta soluție (fără a modifica fișierele de bază) este să folosești JavaScript.
function wpse_159462_login_form() {
echo <<<html
<script>
document.getElementById( "user_pass" ).autocomplete = "off";
</script>
html;
}
add_action( 'login_form', 'wpse_159462_login_form' );
Cu toate acestea, dacă nu ești singura persoană care se va autentifica, aș recomanda să nu dezactivezi completarea automată, deoarece cu siguranță va enerva oamenii.
Dacă pe cineva interesează, iată o soluție care a funcționat pentru mine
if ( $GLOBALS['pagenow'] === 'wp-login.php' ) {
ob_start();
}
add_action('login_form', function($args) {
$login = ob_get_contents();
ob_clean();
$login = str_replace('id="user_pass"', 'id="user_pass" autocomplete="off"', $login);
$login = str_replace('id="user_login"', 'id="user_login" autocomplete="off"', $login);
echo $login;
}, 9999);
Iată o soluție doar cu PHP la care am ajuns:
function disable_autofill_password($safe_text, $text) {
if($safe_text === 'user_pass') {
$safe_text .= '" autocomplete="new-password';
}
return $safe_text;
}
add_filter('attribute_escape', 'disable_autofill_password', 10, 2);
Este un mic hack al filtrului esc_attr, care închide atributul id al câmpului de parolă și apoi adaugă atributul autocomplete (valoarea new-password este folosită pentru Chrome).
cineva a creat un plugin care face exact asta, nu se află în depozitul de plugin-uri WordPress, dar este destul de simplu și funcționează perfect. Este o practică bună să verifici codul sursă dacă ai dubii despre plugin-uri care nu sunt listate în depozitul WordPress, eu am făcut-o și nu am găsit nimic suspect.
vezi codul aici: https://www.buzelac.com/2014/10/disabling-wordpress-login-password-autocomplete/
sau descarcă plugin-ul de aici: https://www.buzelac.com/wp-content/uploads/2015/05/disable-login-autocomplete.zip
nu este mult de spus, pur și simplu înlocuiește 'id="user_pass"' cu 'id="user_pass" autocomplete="off"' când formularul de autentificare este generat:
$content = str_replace('id="user_pass"', 'id="user_pass" autocomplete="off"', $content);
Încearcă PHP Output Buffering:
add_action('login_header', function () {
ob_start(); // Pornim buffer-ul de ieșire
});
add_action('login_footer', function () {
$content = ob_get_clean(); // Preluăm conținutul din buffer și oprim buffering-ul
$content = str_replace(' name="log"', ' name="log" autocomplete="off"', $content); // Adăugăm autocomplete="off" pentru câmpul de utilizator
$content = str_replace(' name="pwd"', ' name="pwd" autocomplete="off"', $content); // Adăugăm autocomplete="off" pentru câmpul de parolă
echo $content; // Afișăm conținutul modificat
});