3

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;
}
4

4 に答える 4

1

さらに、POST データを使用して、ユーザー名または電子メールが送信されたかどうかを確認できます。

add_filter ('retrieve_password_message', 'custom_retrieve_password_message', 10, 2);
  function custom_retrieve_password_message($content, $key) {
    if ( username_exists($_POST['user_login']) ){
    $user_login = $_POST['user_login'];
} else {
    $user_data = get_user_by_email(trim($_POST['user_login'])); 
    $user_login = $user_data->user_login;
}
    ob_start();
...
于 2014-01-22T16:19:45.373 に答える
1

残りのすべてについては完全にはわかりません。-しかし、1 つには、引用符を正しく設定する必要があります。試す

echo wp_login_url('url')

いいえ

echo wp_login_url("url")

例:

<a href="<?php echo wp_login_url('url') ?>?action=rp&key=<?php echo $key ?>&login=<?php echo $user_login ?>">Reset password</a> 

または試す

echo '<a href=' . wp_login_url("url") . '?action=rp&key='.$key.'&login='.$user_login.'>Reset password</a> ';

また、(それが役に立たない場合) どこで、どのように、どのテンプレートを使用して、より深く掘り下げることができるかを詳しく教えていただけますか?

于 2013-11-17T03:14:04.727 に答える