6

From the wp admin login page I click to reset my password (not on the theme, on wp). I get the email but it contains no url to click. Plugins are disabled. What shoud I do?

  • then what does it sends? – Third Essential Designer Nov 16 '16 at 13:22
  • I't sends an email about somebody asked for a new password and I have to verify by clickin to the following link. But there's no link, just a blank line. – tt24 Nov 24 '16 at 17:58
  • I have the exact same issue for years: how come this haven't been fixed by WordPress already? Is it that not widespread? – CDuv May 13 at 10:50
7

The problem is the < and > which surround the reset url in wp-login.php. You can remove them using retrieve_password_message in your theme functions.php file like below.

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

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

$message = "Someone has requested a password reset for the following account:

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

If this was a mistake, just ignore this email and nothing will happen.

To reset your password, visit the following address:

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


  return $message;

}
2

If you only want to remove the angle brackets WordPress added but let the rest of the generated message unchanged, add the following to the functions.php of your WordPress theme (eg. wp-content/themes/some_awesome_theme/functions.php).

/**
 * Removes angle brackets (characters < and >) arounds URLs in a given string
 *
 * @param string $string    The string to remove potential angle brackets from
 *
 * @return string    $string where any angle brackets surrounding an URL have been removed.
 */
function remove_angle_brackets_around_url($string)
{
    return preg_replace('/<(' . preg_quote(network_site_url(), '/') . '[^>]*)>/', '\1', $string);
}

// Apply the remove_angle_brackets_around_url() function on the "retrieve password" message:
add_filter('retrieve_password_message', 'remove_angle_brackets_around_url', 99, 1);
1

Check out the wp-login.php on GitHub.

The default blocks looks like:

// Redefining user_login ensures we return the right case in the email.
$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 = __('Someone has requested a password reset for the following account:') . "\r\n\r\n";
$message .= network_home_url( '/' ) . "\r\n\r\n";
$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n";
$message .= __('If this was a mistake, just ignore this email and nothing will happen.') . "\r\n\r\n";
$message .= __('To reset your password, visit the following address:') . "\r\n\r\n";
$message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n";

You should be able to filter the password reset message with 'retrieve_password_message' and change it to what you need.

$message = apply_filters( 'retrieve_password_message', $message, $key, $user_login, $user_data );
0

I had this problem and wanted to share how I solved it here.

I opened the email and to the right where you would see the time stamp of when you got the email, there will be three dots.

Click on that and then click "show original"

From there you will see the code for the email. Look for the part of the email where it says you should click on the link.

Copy the link that is within the < > marks. Paste it into your browser and voila, you will be able to reset.

New contributor
Travis is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.