WordPressユーザー登録時の通知メール文を変更する(4.3以降)

登録ユーザーへのメール

WordPressでユーザー登録が行われると、登録されたメールアドレスにメール送信が行われます。

しかし、とても簡素なメールなのでクライアントから変更して欲しいと言われることがしばしばあります。

 

ユーザー名: [登録メールアドレス]
パスワードを設定するには以下のアドレスへ移動してください。
<[パスワードリセット用のURL]>
[WordPress URL]/wp-login.php

 


 

フィルターフックはない

新規ユーザー登録時のメール送信は次のファイル内に定義されているwp_new_user_notification という関数です。

wp-includes/pluggable.php

 

この関数の中を見ても、フィルターフックはありません。

この、「pluggable.php」に定義されている関数はプラガブル関数といい、プラグインで上書きすることができます

※テーマ内のfunctions.phpでは上書きができません。

また、他のプラグインとのバッティングを考えるとfunction_existsで、定義済みの関数かどうかをチェックしておく方がよさそうです。

 


 

一方でパスワードリセットのメール文は

パスワードのリセット時のメール文に関しては、retrieve_password_message というフィルターで書き換えが可能です。

こちらは、プラガブル関数には定義されていません。ややこしいですね。

 


 

しかも、4.3から引数が変わりました

 

wp_new_user_notification の引数が変わりました。

GitHubでの変更履歴は以下の通り

Passwords: Deprecate second parameter of `wp_new_user_notification()`.

Passwords: Restore second parameter for `wp_new_user_notification()`.

 


 

パラメータの比較

4.2.4まで

wp_new_user_notification($user_id, $plaintext_pass = ”)

4.3から

wp_new_user_notification( $user_id, $deprecated = null, $notify = ” )

 


 

平文パスワードが通知時のパラメータからなくなる。

新規ユーザ登録のメール本文で、プラガブル関数を上書きしていて、

平文パスワードを、「パスワード:◯◯◯」です。みたいにしたかったのに、

「パスワード:both」になってしまっている方はこのパラメータの変更が影響している可能性が大ですので、プラグインで定義しているwp_new_user_notification 関数の内容のアップデートが必要です。

 


フィルターがあったらいいのにな・・・

と思ったのですが、#15056 New hook for wp_new_user_notification()というチケットが2010年に立てられるものの、「プラガブル関数なので好きに上書きできる」で終了されていました。。

といっても、プラガブル関数内にまったくフィルターが用意されていないわけでもないので、もしかしたらTrac突撃すればいけるかも?