ダッシュボードから新しいユーザーを追加するときに、Wordpressに追加されたときにユーザーに送信される通知メールが正しく機能しないことに気付きました。電子メールには次の行が含まれていますが、登録キーがなく、リンクが正しく表示されていないことがわかります。
To set your password, visit the following address: http://www.domain.com/wp-login.php
私は、wp_mailの内容を次のように出力しながら、少し掘り下げました。
add_filter('wp_mail', function($email) {
var_dump($email);
return $email;
}, 1);
そして、これを新しいユーザー通知Eメールで見てみましょう。
array(5) {
["to"]=>
string(20) "[email protected]"
["subject"]=>
string(47) "[My Great Blog] Your username and password info"
["message"]=>
string(224) "Username: test19
To set your password, visit the following address:
<http://www.domain.com/wp-login.php?action=rp&key=1nTPsJVMk3H2eEM3Wgpm&login=test19>
http://www.domain.com/wp-login.php
"
["headers"]=>
string(0) ""
["attachments"]=>
array(0) {
}
}
奇妙なことに、この種のリンクには正しいリンクが含まれていますが、HTMLは不正な形式であり(A href = ""はありません)、最後には付けられません。私はWordpress Tracでこれを確認しました。
これがうまくいかない理由については誰でも洞察を持っています。ウェブサイトの非常に重要な部分のようです。
バージョン4.9.8.
'wp_mail_content_type'をtext/html 'に設定してください。
WordPress 4.9.0では、新しいユーザー通知メール機能(wp_new_user_notification)に2つのフィルターが導入されました。
これは管理者に送信された電子メールの形式で、質問の形式とは異なるため、2番目は無視してかまいません。一方、wp_new_user_notification_emailでは、 'to'、 'subject'、 'message'および 'headers'をwp_mail()関数に送信する前に変更できます。
ただし、wp_new_user_notification_emailの直後に起動されるwp_mailフィルタを傍受したので、その時点ですべて正常に表示されるため、問題は後であるはずです。メッセージをフィルタ処理できる唯一の場所は、wp_mailフィルタです。
文字セットやクライアントサイドの電子メールに問題がないと確信している場合は、add_filter( 'wp_mail'、...)への他の呼び出しを探してください。受け取ったEメールのソースコードもチェックしてください。
すみません、私はこれ以上助けにはなれません。これは興味深い質問であり、私は最終的に解決策が何か他の提案があるかを聞くのを楽しみにしています。