¿Cómo puedo modificar el texto predeterminado del correo electrónico de restablecimiento de contraseña?
Encontré algunas preguntas similares aquí, pero no pude aplicar las soluciones que se proporcionaron.
El correo electrónico estándar de restablecimiento de contraseña que WordPress está enviando no proporciona una URL clickeable para los usuarios que restablecen su contraseña. Así es como se ve el correo electrónico actual:
Parece que la URL del sitio (https://jewelbound.com) debería estar en la parte inferior, conectada al "/wp-login.php?action......"
Por favor, ayúdenme a saber cómo modificar el siguiente código de plantilla de correo electrónico para eliminar la URL "https://jewelbound.com/" de la parte superior, agregarla a la URL proporcionada en la parte inferior y hacer que sea una URL larga, conectada (y clickeable) que permitirá al usuario restablecer su contraseña. Aquí está la plantilla de mi archivo wp-login.php:
$message = __( 'Alguien ha solicitado un restablecimiento de contraseña para la siguiente cuenta:' ) . "\r\n\r\n";
/* traducción: %s: nombre del sitio */
$message .= sprintf( __( 'Nombre del sitio: %s'), $site_name ) . "\r\n\r\n";
/* traducción: %s: nombre de usuario */
$message .= sprintf( __( 'Nombre de usuario: %s'), $user_login ) . "\r\n\r\n";
$message .= __( 'Si esto fue un error, simplemente ignora este correo y no pasará nada.' ) . "\r\n\r\n";
$message .= __( 'Para restablecer tu contraseña, visita la siguiente dirección:' ) . "\r\n\r\n";
$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n";
/* traducción: Asunto del correo de restablecimiento de contraseña. %s: Nombre del sitio */
$title = sprintf( __( '[%s] Restablecimiento de Contraseña' ), $site_name );
¡Gracias de antemano a cualquiera que esté dispuesto a ayudar!
Para responder a tu pregunta específica, "¿Cómo puedo modificar el texto predeterminado del correo electrónico de restablecimiento (perdido) de contraseña?", la respuesta sería utilizar el filtro retrieve_password_message
. Y en última instancia, esa podría ser una forma de resolver tu problema.
Pero creo que necesitas profundizar un poco más para descubrir qué está pasando realmente. En tu pregunta, preguntaste sobre modificar el "texto predeterminado del correo electrónico de restablecimiento de contraseña", pero lo que realmente tienes no es el predeterminado real. Si lo fuera, la URL estaría toda junta, no separada como está ahora.
Yo comenzaría desactivando todos los plugins y cambiando del tema que estés utilizando al tema predeterminado de WP. En otras palabras, una instalación muy básica sin interferencias. Pruébalo entonces. Si no obtienes el mismo resultado, entonces hay algo en algún lugar que está estropeando la URL. Hay filtros para retrieve_password_message
y network_site_url
que podrían permitir que alguna función de filtro en algún lugar esté causando tu problema. Desactivar los plugins y usar un tema básico sin modificaciones debería llevarte a descubrir si ese es el caso.
En última instancia, si no puedes rastrearlo, entonces reescribir todo el contenido del mensaje en el contexto del filtro retrieve_password_message
te dará una solución alternativa sea cual sea el problema. El filtro a continuación reproduce el mensaje predeterminado. Incluye una posible solución alternativa para la generación de la URL en caso de que algo enganchado a network_site_url
sea el culpable. Si lo es, usa la alternativa y escribe el dominio manualmente como se indica.
add_filter( 'retrieve_password_message', 'my_retrieve_password_message', 10, 4 );
function my_retrieve_password_message( $message, $key, $user_login, $user_data ) {
// Comienza con el contenido predeterminado.
$site_name = wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES );
$message = __( 'Alguien ha solicitado un restablecimiento de contraseña para la siguiente cuenta:' ) . "\r\n\r\n";
/* translators: %s: nombre del sitio */
$message .= sprintf( __( 'Nombre del sitio: %s' ), $site_name ) . "\r\n\r\n";
/* translators: %s: nombre de usuario */
$message .= sprintf( __( 'Nombre de usuario: %s' ), $user_login ) . "\r\n\r\n";
$message .= __( 'Si esto fue un error, simplemente ignora este correo electrónico y no pasará nada.' ) . "\r\n\r\n";
$message .= __( 'Para restablecer tu contraseña, visita la siguiente dirección:' ) . "\r\n\r\n";
$message .= '<' . network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . ">\r\n";
/*
* Si el problema persiste con este filtro, elimina
* la última línea anterior y usa la línea a continuación
* eliminando "//" (que la comenta) y escribiendo
* manualmente el dominio de tu sitio, evitando así
* la función network_site_url().
*/
// $message .= '<http://tusitio.com/wp-login.php?action=rp&key=' . $key . '&login=' . rawurlencode( $user_login ) . ">\r\n";
// Devuelve el mensaje filtrado.
return $message;
}
