会員制サイトを、WordpressプラグインTheme My Login で制作するシリーズです。
過去記事は:
Theme My Login 登録フォーム(準備編)
Theme My Login 登録フォーム(実装編)
Theme My Login 登録フォーム(おまけ)
今回は新規登録時の通知メールのカスタマイズです。
カスタマイズしないとちょっと ‘かっこ悪い’
登録したユーザーと、管理者あてに、WordPressは通知メールを送信します。
新規ユーザーに送られるメールの内容は:
- 送信者:WordPress<WordPress@ドメイン>
- 件名:[サイト名]あなたのユーザー名とパスワード
- 内容:ユーザー名、パスワード、ログインURL
このようにちょっとかっこ悪いメールが送信されます。管理者あての通知も似たようなものです。
通知メールをカスタマイズしてちょっと ‘かっこよくする’
WordPressプラグイン Theme My Login にはそのためのアドオンが備わっています。
カスタムメールを使えるように設定する
[管理画面 / TML / 一般]ページで、
モジュール「Custom E-mail を有効にする」のチェックボックスをチェックして有効化してください。
そうすると、[管理画面 / TML / メール]という設定ページを表示できるようになります。
そのカスタムメールの設定ページを開くと・・・
新規ユーザーあて、新規ユーザー登録通知(管理者あて)のテンプレートをカスタマイズすることができます。
(「パスワードを忘れました」のためのテンプレートもこの設定ページでカスタマイズします。要領は同じです。)
通知メールをカスタマイズしてみる
見れば分かりますので、細かな説明は割愛します。
「使用できる変数」だけ少し補足:
メッセージのテキストエリアの上に、使用できる変数の一部が紹介されています。
- %blogname%:サイト名
- %siteurl%:サイトURL
- %user_login%:ユーザーID(ユーザー名)
- %user_email%:登録メールアドレス
- %user_pass%:パスワード
- %user_ip%:登録ユーザーのIPアドレス
しかし、これらだけではなく、他のユーザー登録項目も変数として使えます。
たとえば、このTheme My Login 登録フォーム シリーズ、準備編、実装編では、オリジナルのユーザープロフィール項目を増やして、新規登録時の登録フォームに入力してもらうフィールドを追加する手順について扱ってきました。
これらのオリジナルのプロフィール項目も通知メッセージに含めてしまうことができます。
メッセージ をこんな感じにします。
%last_name% 様 %blogname% にご登録いただきありがとうございます。 以下の情報をご確認ください。 【ログイン情報】 メールアドレス:%user_email% パスワード:%user_pass% 【ご登録内容】 お名前:%last_name% フリガナ:%user_name_kana% 性別:%user_sex% 会社名:%user_company% 電話番号:%user_tel% FAX番号:%user_fax% ご住所:%user_addr_zip% %user_addr_pref% %user_addr% 会員規約に同意:%user_confirm% 以下のURLよりログインしてください。 %siteurl%/login/ %blogname%
その他のフィールド、「From名前」「Fromメールアドレス」「件名」にも変数を使用して編集することができます。
ちょっとかっこよくなったことと思います。
空項目がブログ名になってしまう(追記2013/07/29)
オリジナルプロフィール項目を通知メールに加えた場合に不具合が生じます。
追加した項目が登録時に空だった場合に、通知メールではその項目の値がブログ名になってしまいます。
これは編集置換の際にTheme My Loginは、ユーザーメタに該当する値がない場合にブログ情報に該当する値があるものと自動的にみなすように組まれています。(class-theme-my-login-common.php)
幸い、そのロジック記述にフィルターフックが設けられています。これをフックすればよいようです。
theme-my-login-custom.phpを作成
Theme My Loginのフックは、theme-my-login-custom.php というファイルに記述します。
これは、プラグインをインストールしただけでは存在しないファイルです。
初めてフックを記述する場合はまだ制作されていないはずですから theme-my-login-custom.php という名前で空のphpファイルを作成してください。
そして次のように記述します。
<?php /* ユーザー登録時、空項目がブログ名になってしまう時の対策 キーが%blogname%でないのに、$valがブログ名の場合、値をブランクにする */ function my_tml_replace_vars ($replacements) { $blogname = get_bloginfo('name'); foreach ( (array)$replacements as $key => $val ) { if ( $key != '%blogname%' && $val == $blogname ) { $val = ' '; } $replacements_tmp[$key] = $val; } return $replacements_tmp; } add_filter( 'tml_replace_vars', 'my_tml_replace_vars' ); ?>
theme-my-login-custom.phpをアップロード
作成したファイルを pluginフォルダの直下 にアップロードします。
plugin/theme-my-login ではありませんのでご注意ください。
直接メールしてみる
コメントをどうぞ
コメント:2 件
6.4.3なのですが、メール通知にパスワードが含められないようなのですが、いかがでしょうか。
パスワードを表示させようとすると一応文字列が含まれてメールが届きますが、このパスワードではログインができません。
オリジナルプロフィール項目を通知メールに加えた場合に生じる不具合の対処方法を追記しました。