WordPressでユーザ登録時に送信されるメールの内容を変更する
そういえばそんな機能もあったなーってぐらいほぼ使っていなかったけど
依頼があったので方法を調べてみた。
Ver4.9.0以降はフィルターで実装可能
ググるとプラグイン扱いで実装しないと(function.php
に書いても動かない)いう記事ばかりだった。
wp_new_user_notificationという関数を上書きするという方法らしいので、WPのコードを見てみると
$wp_password_change_notification_email = apply_filters( 'wp_password_change_notification_email', $wp_password_change_notification_email, $user, $blogname );
wp_mail(
$wp_password_change_notification_email['to'],
wp_specialchars_decode( sprintf( $wp_password_change_notification_email['subject'], $blogname ) ),
$wp_password_change_notification_email['message'],
$wp_password_change_notification_email['headers']
);
wp_password_change_notification_emailをググってみると、Ver4.9.0からはフィルターが実装されたという情報が。
WordPress 私的マニュアル
wp_new_user_notification
じゃあ簡単じゃんってことで、こんな感じで完成。
そのユーザ用のパスワードリセットURLはフィルターの引数からは取得できなかったようだったから、デフォルトのメッセージの文字列からぶっこ抜く事にした。
add_filter('wp_new_user_notification_email', 'custom_user_notigication', 10, 2);
function custom_user_notigication($wp_new_user_notification_email, $user){
$message = sprintf('ユーザー名: %s', $user->user_login)."nn";
$message .= '以下のページでパスワードを設定してください。'."n";
preg_match('/<(.+)>/', $wp_new_user_notification_email['message'], $matches);
$message .= '<'.$matches[1].'>'."n";
$wp_new_user_notification_email['message'] = $message;
return $wp_new_user_notification_email;
}
コメント0