it-swarm.com.de

Fehlende URL in der E-Mail zum Zurücksetzen des Passworts

Auf der Anmeldeseite für den wp-Administrator klicke ich, um mein Passwort zurückzusetzen (nicht beim Thema auf wp). Ich erhalte die E-Mail, aber sie enthält keine URL zum Klicken. Plugins sind deaktiviert. Was soll ich tun?

6
tt24

Das Problem ist das <und>, das die Reset-URL in der Datei wp-login.php umgibt. Sie können sie mit retrieve_password_message in Ihrer theme functions.php-Datei wie folgt entfernen.

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;

}
7
Luke Seall

Wenn Sie nur die von WordPress hinzugefügten spitzen Klammern entfernen möchten, aber den Rest der generierten Nachricht unverändert lassen möchten, fügen Sie Folgendes zum functions.php Ihres WordPress-Themas hinzu (z. B. 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);
2
CDuv

Schau dir den wp-login.php auf GitHub an.

Die Standardblöcke sehen folgendermaßen aus:

// 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";

Sie sollten in der Lage sein, die Meldung zum Zurücksetzen des Passworts mit 'retrieve_password_message' zu filtern und auf das zu ändern, was Sie benötigen.

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

Ich hatte dieses Problem und wollte hier mitteilen, wie ich es gelöst habe.

Ich habe die E-Mail geöffnet und rechts davon sehen Sie den Zeitstempel, zu dem Sie die E-Mail erhalten haben. Es werden drei Punkte angezeigt.

Klicken Sie darauf und dann auf "Original anzeigen"

Von dort sehen Sie den Code für die E-Mail. Suchen Sie den Teil der E-Mail, in dem steht, dass Sie auf den Link klicken sollen.

Kopieren Sie den Link, der sich innerhalb der Markierung <> befindet. Füge es in deinen Browser ein und voila, du kannst es zurücksetzen.

0
Travis