WordPress で新規ユーザー登録通知メールをカスタマイズするフィルター

はじめに

新規ユーザー登録時の通知メールのカスタマイズは、WordPress 4.9.0 以前では、wp_new_user_notification という pluggable 関数を用いて可能でしたが、pluggable 関数の性質上制約があり、一工夫が必要でした。WordPress 4.9.0 から、フィルターが導入され使いやすくなりました。記事としてはどこにも紹介されていなようなので、書きます。

wp_new_user_notification_email フィルター

以下の様な使い方をします。第1引数は登録されたユーザーのメール情報を配列[to(メールアドレス)、subject(題名)、message(本文)、headers(ヘッダー)の4つ]、第2引数はユーザーオブジェクト、第3引数はサイトのタイトルを返します。

add_filter( 'wp_new_user_notification_email', 'regist_user_notify_mail', 10, 3 );
function regist_user_notify_mail( $wp_mail, $user, $blogname ) {

// ユーザー情報を取得
$user_info = get_userdata( $user->ID );
$unm = $user_info->user_login;
$pswd = $user_info->user_pass;

// 題名
$title = sprintf( __('[%s] Your username and password'), $blogname );

// 本文
$message  = __('Hi there,') . "\r\n\r\n";
$message .= sprintf( __("Welcome to %s! Here's how to log in:"), $blogname ) . "\r\n\r\n";
$message .= wp_login_url() . "\r\n";
$message .= sprintf( __('Username: %s'), $unm ) . "\r\n";
$message .= sprintf( __('If you have any problems, please contact me at %s.'), get_option('admin_email') ) . "\r\n\r\n"

// 配列に格納
$wp_mail['subject'] = $title;
$wp_mail['message'] = $message;

return $wp_mail;

}

その他

管理者あての通知メールの場合は、wp_new_user_notification_email_admin フィルターを使います。使用方法は、上記と同じです。

参考

この記事を書いた人