Cómo aplicar el filtro "retrieve_password_message"

6 sept 2014, 20:52:39
Vistas: 15.5K
Votos: 4

Me gustaría cambiar el cuerpo del correo de recuperación de contraseña que envía WordPress por algo más amigable.

Estoy intentando usar el filtro "retrieve_password_message" pero lo estoy haciendo mal.

¿Alguien podría compartir un ejemplo de código?

0
Todas las respuestas a la pregunta 3
0

las respuestas dadas tienen buenas intenciones. Pero no son buenas. Hay más parámetros en la llamada a la función del filtro, 4 para ser exactos.

esto funcionó para mí para el mensaje (yo quería reemplazar el nombre de usuario con el correo electrónico del usuario)

nota: tenemos una página multisitio. Quizás quieras reemplazar network_site_url con get_site_url()

típicamente en tu functions.php de tu tema de WordPress:

add_filter("retrieve_password_message", "mapp_custom_password_reset", 99, 4);

function mapp_custom_password_reset($message, $key, $user_login, $user_data )    {

  $message = "Alguien ha solicitado un restablecimiento de contraseña para la siguiente cuenta:

" . sprintf(__('%s'), $user_data->user_email) . "

Si esto fue un error, simplemente ignora este correo y no pasará nada.

Para restablecer tu contraseña, visita la siguiente dirección:

" .  '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n" . "

Si tienes más problemas, por favor envíanos un correo a help@myapp.com

El Equipo de Myapp";


  return $message;

}

bonus: cambiar el título/asunto del correo

add_filter( 'retrieve_password_title',
  function( $title )
  {
    $title = __( 'Restablecimiento de contraseña para myapp.org' );
    return $title;
  }
);
4 abr 2017 17:45:46
2

Pensé que este fragmento de código podría ser útil para cualquiera que busque personalizar el correo electrónico de restablecimiento de contraseña.

//* Correo electrónico de activación para restablecer contraseña -> Cuerpo
add_filter( 'retrieve_password_message', 'wpse_retrieve_password_message', 10, 2 );
function wpse_retrieve_password_message( $message, $key ){
    $user_data = '';
    // Si no se envía ningún valor, retorna falso
    if( ! isset( $_POST['user_login'] )  ){
            return '';
    }
    // Obtiene la información del usuario desde user_login
    if ( strpos( $_POST['user_login'], '@' ) ) {

        $user_data = get_user_by( 'email', trim( $_POST['user_login'] ) );
    } else {
        $login = trim($_POST['user_login']);
        $user_data = get_user_by('login', $login);
    }
    if( ! $user_data  ){
        return '';
    }
    $user_login = $user_data->user_login;
    $user_email = $user_data->user_email;
    // Configura el mensaje para recuperar la contraseña
    $message = "¡Parece que quieres restablecer tu contraseña!\n\n";
    $message .= "Por favor haz clic en este enlace:\n";
    $message .= '<a href="';
    $message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login');
    $message .= '">"';
    $message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login');
    $message .= '"</a>\n\n"';
    $message .= 'Saludos cordiales,<br/>Equipo de Dream Team';
    // Retorna el mensaje completo para recuperar la contraseña
    return $message;
}
11 sept 2014 08:43:47
Comentarios

No necesitas verificar los datos de $_POST para obtener user_login. Ya tienes user_login en el parámetro del hook. Usa 3 parámetros en lugar de 2. https://developer.wordpress.org/reference/hooks/retrieve_password_message/

hkchakladar hkchakladar
5 nov 2017 20:28:32

Lamento el voto negativo, pero realmente quería darle la oportunidad a la respuesta de @Toskan de llegar a la cima - es una respuesta mucho mejor y utiliza los datos disponibles del filtro en lugar de reconstruirlos.

squarecandy squarecandy
1 may 2018 22:13:04
6
add_filter("retrieve_password_message", "tu_mensaje_personalizado", 99, 2);

  function tu_mensaje_personalizado($mensaje, $clave)    {

  $mensaje = "tu_mensaje_personalizado";

  return $mensaje;

}

Este es un ejemplo de uso del filtro 'retrieve_password_message'.

Sirve para personalizar el cuerpo del correo electrónico que recibe un usuario al recuperar su contraseña.

6 sept 2014 21:36:24
Comentarios

Por favor, ten en cuenta: no lo he probado.

Domain Domain
6 sept 2014 21:36:59

Por favor explica qué hace.

fuxia fuxia
7 sept 2014 02:10:56

Hola, gracias por tu aporte :-) ¿Podrías agregar el código para el enlace de restablecimiento de contraseña?

William William
7 sept 2014 07:59:29

@toscho, he actualizado la respuesta con una explicación.

Domain Domain
7 sept 2014 19:56:14

@William, ¿qué es exactamente lo que estás buscando?

Domain Domain
7 sept 2014 19:57:09

@WisdmLabs El enlace para restablecer la contraseña falta en tu fragmento de código. http://exmple.com/wp-login.php?action=rp&key={ la clave } &login={ el nombre de usuario } :-)

William William
8 sept 2014 12:33:37
Mostrar los 1 comentarios restantes