Wordpress 通知用に HTML カスタム メール テンプレートを使用しています。
すべてのテンプレートは正常に機能します。ただし、何らかの理由で、パスワード リセット テンプレート (それ以外の場合は問題なく動作します) はuser_login、パスワード リセット リンクの最後に変数を追加しません。これは、キーが有効であるために不可欠です。のないリンク$user_loginは、WP パスワード リセット ページで「無効なキー」エラーを表示します。
リンク内の文字列の例を以下に示しますlogin=username。最後の行が欠落していることに注意してください。
url/wp-login.php?redirect_to=url?action=rp&key=12345678910&login=http://url.com/wp-login.php?redirect_to=url?action=rp&key=12345678910&login=
テンプレートを変更するために使用しているコードは次のとおりです。なぜこれが起こっているのか誰かが知っていますか?もしそうなら、どうすれば修正できますか?
add_filter ('retrieve_password_message', 'custom_retrieve_password_message', 10, 2);
function custom_retrieve_password_message($content, $key) {
global $wpdb;
$user_login = $wpdb->get_var("SELECT user_login FROM $wpdb->users WHERE user_activation_key = '$key'");
ob_start();
$email_subject = custom_retrieve_password_title();
include('email_header.php');
?>
<p>It looks like you need to reset your password for your account!</p>
<p>To reset your password, visit the following address, otherwise just ignore this email and nothing will happen.<p>
<a href="<?php echo wp_login_url("url") ?>?action=rp&key=<?php echo $key ?>&login=<?php echo $user_login ?>">Reset password</a>
<?php
include('email_footer.php');
$message = ob_get_contents();
ob_end_clean();
return $message;
}