web-dev-qa-db-ja.com

パスワード再設定EメールにURLがない

Wp adminのログインページから、私は自分のパスワードをリセットするためにクリックします(テーマではなく、wpに)メールが届きますが、クリックするURLが含まれていません。プラグインは無効になっています。私は何をしますか?

6
tt24

問題はwp-login.phpのリセットURLを囲む<と>です。下記のようにテーマのfunctions.phpファイルで retrieve_password_message を使って削除できます。

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

WordPressが追加した山括弧のみを削除して、生成されたメッセージの残りを変更したくない場合は、WordPressテーマのfunctions.phpに以下を追加します(例: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

GitHubの wp-login.php を調べてください。

デフォルトブロックは次のようになります。

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

あなたは filter'retrieve_password_message'でパスワードリセットメッセージを/そしてあなたが必要とするものにそれを変えることができるはずです。

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

私はこの問題を抱えていたので、ここで解決方法を共有したいと思いました。

私はそのEメールを開いて、そのEメールを受け取ったときのタイムスタンプが見える場所の右側に、3つの点が表示されます。

それをクリックしてから、「オリジナルを表示」をクリックしてください。

そこからあなたはEメールのためのコードを見るでしょう。リンクをクリックする必要があるという電子メールの部分を探します。

<>マーク内にあるリンクをコピーします。それをあなたのブラウザに貼り付けてください。そうすれば、あなたはリセットすることができるでしょう。

0
Travis