Falta URL en el correo de restablecimiento de contraseña
Desde la página de acceso de administrador de WordPress hago clic para restablecer mi contraseña (no en el tema, en WordPress). Recibo el correo pero no contiene ninguna URL para hacer clic. Los plugins están desactivados. ¿Qué debo hacer?

El problema son los <
y >
que rodean la URL de restablecimiento en wp-login.php
. Puedes eliminarlos usando el filtro retrieve_password_message en el archivo functions.php
de tu tema como se muestra a continuación:
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 sucederá 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";
return $message;
}

¿Qué significan el 99 y el 4 en la siguiente línea? ¿Alguien me puede explicar? add_filter("retrieve_password_message", "mapp_custom_password_reset", 99, 4); La respuesta anterior funciona para mí, pero no sé qué son los últimos 2 parámetros.

¿Qué significan el 99 y el 4 en la siguiente línea? ¿Alguien me puede explicar? add_filter("retrieve_password_message", "mapp_custom_password_reset", 99, 4); La respuesta anterior funciona para mí, pero no sé qué son los últimos 2 parámetros y cómo puedo obtenerlos para pasarlos en el filtro.

El 99 es la prioridad y el 4 es el número de argumentos que se pasarán a la función de callback - https://developer.wordpress.org/plugins/hooks/actions/#additional-parameters

Si solo deseas eliminar los corchetes angulares que WordPress añade pero mantener el resto del mensaje generado sin cambios, agrega lo siguiente al archivo functions.php
de tu tema de WordPress (por ejemplo, wp-content/themes/some_awesome_theme/functions.php
).
/**
* Elimina los corchetes angulares (caracteres < y >) alrededor de las URLs en una cadena dada
*
* @param string $string La cadena de la cual eliminar posibles corchetes angulares
*
* @return string $string donde cualquier corchete angular que rodee una URL ha sido eliminado.
*/
function remove_angle_brackets_around_url($string)
{
return preg_replace('/<(' . preg_quote(network_site_url(), '/') . '[^>]*)>/', '\1', $string);
}
// Aplica la función remove_angle_brackets_around_url() en el mensaje de "recuperar contraseña":
add_filter('retrieve_password_message', 'remove_angle_brackets_around_url', 99, 1);

Echa un vistazo al archivo wp-login.php
en GitHub.
Los bloques predeterminados se ven así:
// Redefinir user_login asegura que devolvamos el caso correcto en el correo electrónico.
$user_login = $user_data->user_login;
$user_email = $user_data->user_email;
$key = get_password_reset_key( $user_data );
if ( is_wp_error( $key ) ) {
return $key;
}
$message = __('Alguien ha solicitado un restablecimiento de contraseña para la siguiente cuenta:') . "\r\n\r\n";
$message .= network_home_url( '/' ) . "\r\n\r\n";
$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";
Deberías poder filtrar el mensaje de restablecimiento de contraseña con 'retrieve_password_message'
y cambiarlo según tus necesidades.
$message = apply_filters( 'retrieve_password_message', $message, $key, $user_login, $user_data );

Tuve este problema y quería compartir cómo lo resolví aquí.
Abrí el correo electrónico y a la derecha, donde normalmente verías la marca de tiempo de cuando recibiste el correo, habrá tres puntos.
Haz clic en eso y luego selecciona "mostrar original"
Desde allí verás el código del correo. Busca la parte del correo donde dice que debes hacer clic en el enlace.
Copia el enlace que está entre los signos < >. Pégalo en tu navegador y listo, podrás restablecer tu contraseña.

Tuve este problema e hice algo similar a Travis...
- Haz clic derecho en el mensaje de correo electrónico
- Selecciona ver código fuente
- Copia el enlace que aparece debajo de las palabras 'Para restablecer tu contraseña, visita la siguiente dirección:'
- Pégalo en el cuadro de tu dominio y listo.
Espero que esto también te ayude :)
