-
投稿者投稿
-
2024年11月27日 4:29 PM #142946
【お使いの Snow Monkey Forms のバージョン】 9.0.3
### 実現したいこと
Snow Monkey Formsで作成したフォームを送信時の送られる自動送信メール(ユーザー向け、管理者向け)にログインしているユーザーがフォームを送信した場合に、自動返信メールにログインユーザーの情報(ユーザー名、メールアドレス)を送信したい。
### 発生している問題
### 試したこと
// ログインユーザーの名前を取得するカスタムメールタグ add_filter('snow_monkey_forms/custom_mail_tag', function($value, $name) { if ('login_user_name' === $name) { $current_user = wp_get_current_user(); return $current_user->display_name; } return $value; }, 10, 2); // ログインユーザーのメールアドレスを取得するカスタムメールタグ add_filter('snow_monkey_forms/custom_mail_tag', function($value, $name) { if ('login_user_email' === $name) { $current_user = wp_get_current_user(); return $current_user->user_email; } return $value; }, 10, 2);
のように書いて、現在のログインユーザーの情報を取得して、
{login_user_name}
、{login_user_email}
でメールに記載しようとしているのですが、空欄になってしまいます。// ログインユーザーの名前を取得するカスタムメールタグ add_filter('snow_monkey_forms/custom_mail_tag', function($value, $name) { if ('login_user_name' === $name) { $current_user = wp_get_current_user(); return "メールアドレス:". $current_user->display_name; } return $value; }, 10, 2);
みたいな感じで書くと、「メールアドレス:」は表示されているので、フィルターフックを使ったカスタムタグは作成できているようなのですが、ログインユーザーの情報取得がカスタムタグ内だとうまく取得できてないようなのですが、解決方法ありますか?
♥ 0いいねをした人: 居ません2024年11月27日 6:45 PM #142947先ほどの投稿に補足させていただきます。
過去に質問させていただ下記で回答いただいたメソッドを使っていて、機能していたのですが、いつのバージョンからかちょっと分からないのですが、最新バージョンでうまくいかないという状態です。
♥ 0いいねをした人: 居ません2024年11月27日 11:34 PM #142951その時に動いていたコードを貼っておきます。
/** * {user_email} でフォームを送信した WordPress ユーザーのメールアドレスを返す */ add_filter( 'snow_monkey_forms/custom_mail_tag', function ($value, $name, $responser) { if ('user_email' === $name) { $meta = $responser->get_meta(); // フォームのメタ情報とフォーム送信者の情報を持った Meta クラスを取得 if ($meta) { $user = $meta->get_sender(); // フォーム送信者の情報(WP_User)を取得 return $user->user_email; } } return $value; }, 10, 3 ); /** * {username} でフォームを送信した WordPress ユーザーのユーザー名を返す */ add_filter( 'snow_monkey_forms/custom_mail_tag', function ($value, $name, $responser) { if ('username' === $name) { $meta = $responser->get_meta(); // フォームのメタ情報とフォーム送信者の情報を持った Meta クラスを取得 if ($meta) { $user = $meta->get_sender(); // フォーム送信者の情報(WP_User)を取得 return $user->user_login; } } return $value; }, 10, 3 );
♥ 0いいねをした人: 居ません2024年11月28日 11:59 AM #142967えっと、現状、
「ログインユーザーの名前を取得するカスタムメールタグ」
「ログインユーザーのメールアドレスを取得するカスタムメールタグ」
「{user_email} でフォームを送信した WordPress ユーザーのメールアドレスを返す」
「{username} でフォームを送信した WordPress ユーザーのユーザー名を返す」の4つとも意図したとおりに動いていないということですかね?
♥ 0いいねをした人: 居ません2024年11月28日 1:37 PM #142969バラバラ書いてしまってすみません。
全部、意図通り動いてないのはその通りです。
「{user_email} でフォームを送信した WordPress ユーザーのメールアドレスを返す」
「{username} でフォームを送信した WordPress ユーザーのユーザー名を返す」が、動かなくなってしまっているのに気が付いて、
「ログインユーザーの名前を取得するカスタムメールタグ」
「ログインユーザーのメールアドレスを取得するカスタムメールタグ」に書き直してみたのですが、
それは以前相談させていただいたときにうまく動かないと教えていただいたコードと同じだったので、
追加いただいたメソッドに対応した「{user_email} でフォームを送信した WordPress ユーザーのメールアドレスを返す」
「{username} でフォームを送信した WordPress ユーザーのユーザー名を返す」に戻して確認したが、やはり動かず困っているという状態です。
♥ 0いいねをした人: 居ません2024年11月28日 1:53 PM #142970古すぎて参考にならないかもですが、
古いデータを復元して確認したところ、
Snow Mokey Formsのバージョンが、6.5.1の時は
「{user_email} でフォームを送信した WordPress ユーザーのメールアドレスを返す」
「{username} でフォームを送信した WordPress ユーザーのユーザー名を返す」
が動いているのを確認しました。
別のバージョンをダウンロードして、どこまで動いていたか確認します。♥ 0いいねをした人: 居ません2024年11月28日 2:01 PM #142971今、GitHubのリリース(https://github.com/inc2734/snow-monkey-forms/releases)を最新から遡っていって、8.0.0では機能して、9.0.0になると機能しなくなるのを確認しました。
何か分かりますでしょうか?
♥ 0いいねをした人: 居ません2024年11月29日 9:43 AM #1429829.0.0 で大きな変更は入力画面も確認画面や完了画面と同じように REST API で画面表示をおこなうようにしたことです。でも
snow_monkey_forms/custom_mail_tag
が動くのはメール送信時だからあんまり関係ないような気がしますね…。snow_monkey_forms/auto_reply_mailer/is_sended
やsnow_monkey_forms/administrator_mailer/skip
フィルターフックも使っているようなら教えてください。本日の午後から詳しく調査してみます。
♥ 0いいねをした人: 居ません2024年11月29日 10:04 AM #142983ご確認ありがとうございます。
そうなんですね。なんでなんでしょうね。
一応、WordPress 6.7.1まで上げてもSnow Monkey Forms 8.0.0は機能して9.0.3は機能しなかったので、
コアの変更との相性でもなさそうですね。カスタマイズで使っているフィルターフックは、
snow_monkey_forms/custom_mail_tag
で他のタグも作っているのと
snow_monkey_forms/validator/error_message
でエラーメッセージの書き換えをやっているくらいで、
snow_monkey_forms/auto_reply_mailer/is_sended
や
snow_monkey_forms/administrator_mailer/skip
は使っていませんでした。お手数ですが、よろしくお願いします。
♥ 0いいねをした人: 居ません2024年11月29日 6:28 PM #142993入力画面の裏側でユーザー情報を取得していたのに、入力画面を REST API 化したのでユーザー情報が入らないようになっていたみたいです(REST API は普通に通信するだけでは非ログイン状態として扱われる)。
REST API にログイン情報を渡す処理を追加してみようと思いますので、それでもう一度試してみていただけたらと思います。
今からアップデート作業を行います。リリース完了したらまた書き込みます。♥ 0いいねをした人: 居ません2024年11月29日 6:31 PM #142994検証ありがとうございます。
REST API化でそんな影響があるんですね。
了解しました。
アップデート版が出ましたら、試させていただきます。
♥ 0いいねをした人: 居ません2024年11月29日 6:51 PM #1429962024年11月29日 7:00 PM #143000 -
投稿者投稿
- トピック「Snow Monkey Formsの自動返信メールにログインユーザーの情報(ユーザー名、メールアドレス)を載せるタグを作成したい」には新しい返信をつけることはできません。