サポート » 使い方全般 » ユーザー関連の各自動送信メールの加工ができない

  • いつもお世話になっております。
    WordPress version 5.6.3

    ユーザー登録関連の各自動送信メールのカスタマイズが思うようにできずにおり、解決したいです。
    子テーマを作って、子テーマのfunctions.phpにてソースの記述をおこない中です。
    ネット上で色々と調べてみてプラグインが良いと書いてあるものもあって何が正しいのかわからないのですが、一応functions.phpに記述していっております。

    わかる範囲で少しだけ加工してみて以下の「パスワードリセット時に”ユーザーへ届く”自動送信メール」は偶然にも無事に機能しました。
    以下、ソースです。
    ※メールの文章部分は加工して割愛もしております。

    
    function custom_retrieve_password_title( $title, $user_login, $user_data ) {
     $blogname = stripslashes( get_option( 'blogname' ) ); // $title用にサイト名を取得
     $title = '【' . $blogname . '】パスワードリセット(変更)のリクエストを受け付けました';
     return $title;
    }
    add_filter( 'retrieve_password_title', 'custom_retrieve_password_title', 10, 3 );
     
    /* メッセージを設定 */
    function custom_retrieve_password_message( $message, $key, $user_login, $user_data ) {
     
    //$message用に再度、サイト名を取得
     $blogname = stripslashes( get_option( 'blogname' ) );
     
     //メッセージを編集
     $message = $user_login . ' 様' . "\r\n";
     $message .= "\r\n";
     $message .= '弊社Webサイト' . $blogname . 'をご利用いただきありがとうございます。' . "\r\n";
     $message .= "\r\n";
     $message .= 'お客様のユーザーアカウントに' . "\r\n";
     $message .= 'パスワードリセット(変更)のリクエストがありました。' . "\r\n";
     $message .= 'パスワードを変更する場合、' . "\r\n";
     $message .= '以下のURLを開いてお手続きへお進みください。' . "\r\n";
     $message .= "\r\n";
     $message .= network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' ) . "\r\n";
     $message .= "\r\n";
     $message .= "\r\n";
     $message .= "\r\n";
    
     //メッセージを表示
     return $message;
    }
    add_filter( 'retrieve_password_message', 'custom_retrieve_password_message', 10, 4 );
    

    質問(1) この記述で問題はないでしょうか。
    実はたまたま機能しただけで問題があるということはないか懸念しております。色々とやってはみたのですがプログラミング初心者のためこれ以上はわからない状態です。

    質問(2) (もしもソースとしては問題ないということならば)他の自動送信メールでも使い回したいのですが、ソース冒頭の「custom_retrieve_password_title」の変数名を、どこかに書かれているであろう他の自動送信メール用の変数名を探して差し替えて、中身をそれぞれの文章に変更すれば作成できるでしょうか。

    ・パスワードリセット時:管理者メールアドレスへ送信される自動送信メール
    ・新規登録時:管理者メールアドレスへ送信される自動送信メール
    ・新規登録時:ユーザーへ送信される自動送信メール
    ・メールアドレス変更時:管理者メールアドレスへ送信される自動送信メール
    ・メールアドレス変更時:ユーザーのメールアドレスへ送信される自動送信メール
    ・ユーザー〇〇がログインしました、という内容:管理者メールアドレスへ送信される自動送信メール

    質問(3) 送信される自動送信メールの一覧と、この変数名はどこに書いてあるでしょうか。
    何と書いて検索すればいいのかわからず、色々とキーワードを試したのですが見つけることが出来ない状態です。。

    以上お手数をおかけして申し訳御座いません。宜しくお願い致します。

    • このトピックはcharinchiが2年、 12ヶ月前に変更しました。
    • このトピックはcharinchiが2年、 12ヶ月前に変更しました。
7件の返信を表示中 - 1 - 7件目 (全7件中)
  • 質問(1) この記述で問題はないでしょうか。

    たまたま機能したわけではなく、用意されたフックを使っていますので、問題はないでしょう。あとは、stripslashes()するなら最初ではなくもっと後ろが良いような気もします。

    質問(2) (もしもソースとしては問題ないということならば)他の自動送信メールでも使い回したいのですが、ソース冒頭の「custom_retrieve_password_title」の変数名を、どこかに書かれているであろう他の自動送信メール用の変数名を探して差し替えて、中身をそれぞれの文章に変更すれば作成できるでしょうか。

    • パスワードリセット時:管理者メールアドレスへ送信される自動送信メール → wp_password_change_notification_email
    • 新規登録時:管理者メールアドレスへ送信される自動送信メール → wp_new_user_notification_email_admin
    • 新規登録時:ユーザーへ送信される自動送信メール → wp_new_user_notification_email
    • メールアドレス変更時:管理者メールアドレスへ送信される自動送信メール → 不明
    • メールアドレス変更時:ユーザーのメールアドレスへ送信される自動送信メール → email_change_email
    • ユーザー〇〇がログインしました、という内容:管理者メールアドレスへ送信される自動送信メール → 不明

    質問(3) 送信される自動送信メールの一覧と、この変数名はどこに書いてあるでしょうか。

    公式でまとめられているのが見つからなかったので、以下のサイトなどいかがでしょうか。
    https://www.nxworld.net/wp-custom-email.html

    返信したのですが、承認待ちになってしまいました。

    トピック投稿者 charinchi

    (@charinchi)

    @aoixtreme さま、ご連絡ありがとうございます。
    承認待ちというのは、承認されないとここに投稿されないものと理解いたしました。
    拝見できなくてとても残念です。何がトリガーで承認待ちが起こるのでしょうか・・・
    ぜひ拝見したいのですが残念です・・・

    システムにより自動的に承認待ちになりまして、モデレーターの方が承認するまでは表示されません。
    あきらめて、質問(3) について参考になりそうなところだけ書いておきます。

    公式でまとめられているのが見つからなかったので、以下のサイトなどいかがでしょうか。
    https://www.nxworld.net/wp-custom-email.html

    こんにちは。ご質問(1)に関して…
    コードの先頭6行は、パスワードリセット時にユーザーへ自動送信されるメールの件名を変更するのですよね。
    問題ないと思いました。(他のカスタマイズへ応用できるかどうかは別の話です。)
    7行目以降は拝見しておりません、ご容赦ください。

    ご質問(2)に関して…

    ソース冒頭の「custom_retrieve_password_title」の変数名を、どこかに書かれているであろう他の自動送信メール用の変数名を探して差し替えて、中身をそれぞれの文章に変更すれば作成できるでしょうか。

    できるかもしれないし、できないかもしれないですね。
    先頭6行のコード(ソース)が、ご自身で一から作られたものでしたら、その時の調べ方や作り方を応用すればできると思います。

    他の人のコードを参考に一部を変えたものでしたら、WordPress の詳細や、コードに使われている PHP というプログラミング言語のことを、少し深く知ってから作成に取り掛かられた方が良いと思います。
    例えば・・・

    • custom_retrieve_password_title は、変数名ではなく関数名です。WordPress で決められた関数名ではなく、自作関数の関数名です。
    • 先頭の6行が「パスワードリセット時にユーザーへ自動送信されるメールの件名」を変えるためのコードだと分かるのは、関数 add_filter() の第1引数に ‘retrieve_password_title’ というフィルター名が指定されているからです。
    • 例えば、メールアドレス変更時に管理者へ自動送信されるメールの件名や本文を変えるには、’email_change_email’ というフィルター名を指定します。この時、custom_retrieve_password_title に相当する関数は、作り方(中身)を変える必要があります。

    変えたいメールに応じたフィルター名を見つけるのが最初で、次にそのフィルター名に差し込む自作関数をどんな中身にすれば良いかを考える、という順になります。
    フィルターというのは最初のうちは、「何かの値を通すもの」程度に思っておくと良いです。
    フィルターにメールの件名を通すと、出てきた時には違う件名になっている、というアナロジーです。

    どんな中身にすれば良いかを考えるには、そのフィルターの仕様を確かめて、その仕様に合わせるところから始めると良いです。
    例えば retrieve_password_title の仕様は
    retrieve_password_title | Hook | WordPress Developer Resources
    email_change_email の仕様は
    email_change_email | Hook | WordPress Developer Resources
    に掲載されています。

    ご質問(3)については、私も知りたいです。
    自分で調べてブログに書いてくださっている方がいらっしゃいますね。
    例えば「WordPressから自動送信されるメールをカスタマイズする方法」
    https://mirai-creators.com/10496/

    • この返信は2年、 11ヶ月前にgblsmが編集しました。
    トピック投稿者 charinchi

    (@charinchi)

    @aoixtreme さま、再度のお返事ありがとうございます。
    モデレータのチェックを受けて保留されることもあるのですね。せっかく教えて頂いた内容があるのに読むことができず済みません。
    追加でお示しいただいたページは私も見つけて採用する箇所しない箇所の選別をした記憶が御座います。でも教えて頂いてありがとうございます。重ねて御礼申し上げます。今後とも宜しくお願い致します。

    トピック投稿者 charinchi

    (@charinchi)

    @gblsm さま、とてもためになるアドバイスをしていただいて感謝いたします。
    また、私でも何とかわかるところまで降りてきて書いてくださっていることが伝わってきました。
    色々と「なるほど。わかりやすい」と思うところがありました。

    最初の六行は問題ないとのことですか、まことにありがとうございます。
    一応あちこち調べていて、書き方として共通しているようでしたが自信が持てなくて助かりました。PHPを勉強し始めておりますが、教材が悪いのか、「何をどう考えて組み立てて記述すればよいのか?」がいまひとつわからない状態が続いております。もっと学習いたします。

    それにしても、WordPressには純正状態で自動送信メールの内容をダッシュボード上で編集できるようにしてもらいたいです(笑)
    メールの文章がリリース初期のブログ思想のままになっていて、もはやWordPressは企業のコーポレートサイトや顧客サイトとして沢山利用されているのですから、あのような文章が送られてきても困るところでして・・・汗; プラグインはWordPress本体のバージョンアップに伴って使用できなくなることもしばしばですので、ここは純正で頑張って欲しいです。頑張って欲しいなぁ・・・(笑)

    ご説明のおかげで考え方が少しわかった気が致します。
    例えばフィルターの意味のところなど、大変にわかりやすいです。
    お示しのWordPressのUSサイトに関数名が決められていたり、パラメータが決められていたりしたのがわかり、こういうことが知りたかったです。
    実は自分も質問後に色々調べていて、お示しのUSのページがいくつかあるのを私も知りまして、それによってさらに驚いたことがわかりました。
    自動送信メールのタイプによって、記述ルールが違うそうなんです。自動送信メールAはこう記述する決まりだが、別の自動送信メールBはAの記述は使えず、別の記述ルールが存在する、などです。
    事情があるのでしょうが、何とか記述ルールを統一して欲しいと思ってしまいました。
    自動送信メールの内容をちゃんとした文章にするだけでこんなに手間がかかるのか、という印象です。
    でもおかげさまでだいぶわかってきました。重ねて御礼申し上げます。
    今後ともなにとぞ宜しくお願いいたします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「ユーザー関連の各自動送信メールの加工ができない」には新たに返信することはできません。