web-dev-qa-db-ja.com

「retrieve_password_message」フィルタを適用する方法

WPが送信するパスワード再設定Eメールの本文を、よりわかりやすいものに変更したいと思います。

"retrieve_password_message" フィルタを使おうとしていますが、それをめちゃくちゃにしています。

誰かが親切にサンプルコードを投稿できますか?

4
William

与えられた答えは善意を持っています。しかし、良くありません。フィルタ関数呼び出しにはもっと正確な4のパラメータがあります。

これは私のためにメッセージのために働きました(私はユーザーの電子メールでユーザー名を置き換えたかったです)

マルチサイトページがあります。 network_site_urlをget_site_url()に置き換えます。

通常あなたのワードプレスのあなたのfunctions.phpの中では:

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" . "

If you have any further issues, please email us to [email protected]

The Myapp Team";


  return $message;

}

ボーナス:メールのタイトル/件名を変更

add_filter( 'retrieve_password_title',
  function( $title )
  {
    $title = __( 'Password reset for myapp.org' );
    return $title;
  }
);
5
Toskan

このコードのスニペットは、パスワード再設定のEメールをカスタマイズしようとしている人には役立つかもしれないと思いました。

//* Password reset activation E-mail -> Body
add_filter( 'retrieve_password_message', 'wpse_retrieve_password_message', 10, 2 );
function wpse_retrieve_password_message( $message, $key ){
    $user_data = '';
    // If no value is posted, return false
    if( ! isset( $_POST['user_login'] )  ){
            return '';
    }
    // Fetch user information from user_login
    if ( strpos( $_POST['user_login'], '@' ) ) {

        $user_data = get_user_by( 'email', trim( $_POST['user_login'] ) );
    } else {
        $login = trim($_POST['user_login']);
        $user_data = get_user_by('login', $login);
    }
    if( ! $user_data  ){
        return '';
    }
    $user_login = $user_data->user_login;
    $user_email = $user_data->user_email;
    // Setting up message for retrieve password
    $message = "Looks like you want to reset your password!\n\n";
    $message .= "Please click on this link:\n";
    $message .= '<a href="';
    $message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login');
    $message .= '">"';
    $message .= network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login');
    $message .= '"</a>\n\n"';
    $message .= 'Kind Regards,<br/>Dream Team';
    // Return completed message for retrieve password
    return $message;
}
2
William
add_filter("retrieve_password_message", "your_custom_message", 99, 2);

  function your_custom_message($message, $key)    {

  $message = "your_custom_message";

  return $message;

}

これは、retrieve_password_messageフィルタフックの使用例です。

これは、パスワードを取得している間に誰かが受け取るEメール本文を上書きするためです。

0
WisdmLabs