Cambiar mensajes de error del inicio de sesión

5 ago 2011, 23:03:22
Vistas: 35.5K
Votos: 21

He revisado las preguntas pero no pude encontrar una similar.

Necesito cambiar los mensajes de error personalizados que se muestran cuando un usuario intenta iniciar sesión con un nombre de usuario o contraseña incorrectos.

Por ejemplo, cambiar esto: "ERROR: La contraseña que ingresaste para el nombre de usuario %1$s es incorrecta. ¿Perdiste tu contraseña?" por esto "Información incorrecta" (solo un ejemplo)

Intenté usar "add_filter" pero no estoy familiarizado con él, así que ¡cualquier ayuda será apreciada! ¡Gracias!

Aquí te muestro cómo puedes hacerlo. Agrega este código en el archivo functions.php de tu tema:

add_filter('login_errors', 'personalizar_mensajes_error_login');

function personalizar_mensajes_error_login($error) {
    // Lista de mensajes de error originales y sus reemplazos
    $mensajes = array(
        // Mensaje de contraseña incorrecta
        "ERROR: La contraseña que ingresaste para el nombre de usuario" => "Información de acceso incorrecta",
        // Mensaje de usuario desconocido
        "ERROR: Usuario no válido" => "Información de acceso incorrecta",
        // Mensaje de campo vacío
        "El campo de usuario está vacío" => "Por favor, completa todos los campos"
    );

    // Reemplazar los mensajes originales con los personalizados
    foreach($mensajes as $original => $nuevo) {
        $error = str_replace($original, $nuevo, $error);
    }
    
    return $error;
}
1
Comentarios

Por si acaso, el comentario anterior del usuario20986 es spam. Te lleva a una página que te dice que tu software flash está desactualizado y necesita ser actualizado. Recomiendo que los administradores eliminen el comentario del usuario20986

leromt leromt
30 ene 2019 17:07:09
Todas las respuestas a la pregunta 1
6
24

puedes hacer eso usando el hook de filtro login_errors y así es cómo:

add_filter('login_errors','login_error_message');

function login_error_message($error){
    //verifica si ese es el error que estás buscando
    $pos = strpos($error, 'incorrect');
    if (is_int($pos)) {
        //es el error correcto así que puedes sobrescribirlo
        $error = "Información incorrecta";
    }
    return $error;
}

actualización:

acabo de probar el código y funciona bien, simplemente pegué el código en el archivo functions.php de mi tema sin cambiar nada con el archivo .po

descripción de la imagen aquí

6 ago 2011 00:59:18
Comentarios

Solo para aclarar todo, ¿debería reemplazar 'incorrect' con la cadena de error? Por cierto, ¡gracias por tu respuesta!

Vitor Argos Vitor Argos
6 ago 2011 01:07:10

Acabo de intentarlo de esta manera y no funciona, pero no estoy seguro si el archivo .po de WordPress está sobrescribiendo el texto. ¿Alguna idea?

Vitor Argos Vitor Argos
6 ago 2011 01:10:55

el texto de WordPress.po se sirve antes de que se active ese hook de filtro, y no, no tienes que cambiar incorrect, está verificando si el mensaje de error contiene esa palabra.

Bainternet Bainternet
6 ago 2011 01:15:51

Intenté hacer que esto funcionara pero no pude. Incluso intenté eliminar la parte condicional, así que debería devolver el texto en la variable $error, ¿verdad? Pero no tiene ningún efecto.

Al investigar el archivo .po, vi que los mensajes que quiero sobrescribir están ubicados en el archivo wp-includes/user.php como: "<strong>ERROR</strong>: El campo de nombre de usuario está vacío."

Vitor Argos Vitor Argos
6 ago 2011 01:37:06

@Vitor estás haciendo algo mal, no es necesario tocar el archivo .po, actualicé mi respuesta.

Bainternet Bainternet
6 ago 2011 03:03:16

Por favor cambia strpos por stripos que no distingue entre mayúsculas y minúsculas; es importante porque los mensajes de error son como "Error: Nombre de usuario inválido."

Marco Panichi Marco Panichi
9 jun 2022 13:10:40
Mostrar los 1 comentarios restantes