La función de JavaScript wp_attempt_focus
está causando este problema. La función se activa poco después de cargar la página, borra el formulario y se enfoca en él, obligando a los usuarios a ingresar manualmente su información de inicio de sesión.
Chrome está completando el nombre de usuario y la contraseña automáticamente, solo milisegundos antes de que la función JS borre el campo. Chrome no recoge correctamente los cambios, mostrando campos rellenos de color amarillo a pesar de que los campos están realmente vacíos.
Aunque aprecio la funcionalidad de enfoque automático, no puedo pensar en una buena razón por la que alguien quiera que el formulario se borre automáticamente.
La fuente
Lamentablemente, la función se ha codificado wp-login.php
en las líneas 913-930 (WordPress 4.0). Cambiar el wp-login.php
archivo por completo es una mala idea, ya que podría sobrescribirse en cualquier próxima actualización de WordPress. Entonces tendremos que recurrir a un poco de 'pirateo'.
La solución fácil
Se wp_attempt_focus
llama a la función si el formulario no tiene errores. Estamos de suerte: la comprobación de errores se realiza a través de PHP. Esto significa que simplemente podemos evitar que la función se active falsificando un error de formulario en el momento adecuado mediante acciones de WP. Elegí la login_form
acción ya que la acción siempre se dispara después del manejo de errores, justo antes de la llamada JS. Agregue el siguiente código a su tema functions.php
(o archivo de complemento):
add_action("login_form", "kill_wp_attempt_focus");
function kill_wp_attempt_focus() {
global $error;
$error = TRUE;
}
La solución hack
La solución anterior evita que la función se active por completo, lo que significa que tampoco obtendrá el enfoque automático adecuado. Hay otra forma ob_start
de evitarlo : almacenando en búfer la salida HTML y modificándola a través de , inspirada en Geeklab . El almacenamiento en búfer nos permite eliminar porciones específicas de código, en este caso, la parte autoclear d.value = ''
. Sin embargo, no olvides vaciar el búfer.
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();
}
También tuve este problema. Apagó el plugin "WP-SpamShield" de Scott Allen y todo comenzó a funcionar nuevamente.
fuente
Mi contraseña estaba vacía / nula, así que intenté cambiarla por otra, como "1234". Agregar el espacio y eliminarlo no funcionó, tampoco deshabilitó JS. También probé un navegador diferente, ¿es realmente solo en Chrome?
Lo que hice fue cambiar el hash de contraseña en la base de datos y funcionó.
wp_users.user_pass
.en mi caso la contraseña
1234
es como BCrypted:$2a$06$x4lljZOw0Cfuj7jy6qsdp./iX34gaDUMXQIQob4VIHLXQ5yI92RjC
http://bcrypthashgenerator.apphb.com/?PlainText=1234
fuente