質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

2回答

1768閲覧

WordpressのMW WP Formで管理者宛のメールアドレスを投稿ページに投稿したユーザーが登録しているメールアドレスに指定することはできるのか?

tomotarou

総合スコア7

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2019/08/05 04:48

編集2019/08/06 02:55

前提・実現したいこと

多くのライターが投稿するWebメディアを構築中です。

各記事にそれぞれ個別の問い合わせフォーム(この執筆者に仕事を依頼する等の目的)の設置を予定しており、そのフォームから問い合わせがあった際は、サイト管理者と執筆者にも問い合わせがあったことを通知するメールを飛ばしたいと考えています。

当初は、執筆者一人ひとりに専用のフォームを作って対応していく予定でいたのですが、
執筆者の人数があまりにも多い(数百人)と言う点とフォームの管理が煩雑になることから、
作るフォームは一つにして、問い合わせがあった際は各記事の執筆者の情報を判別してユーザー登録しているメールアドレスを宛先にするように処理したいと考えています。

フォームはMW WP Formの利用を検討しているのですが、
例えば投稿ページのpostIDを渡し、そのIDからユーザーを判別して、そのユーザーが登録しているメールアドレスをMW WP Formの宛先に格納するといったようなやり方であっているのでしょうか?

なかなか良いやり方が思い浮かばず困っております。
ご教授頂けましたら幸いです。

回答頂き試したこと、コード

回答頂いた下記コードを試していますが現在のところうまく行っておりません。

function my_mail( $Mail, $values, $Data ) { if( is_single() ) { $my_Mail = clone $Mail; $mypost = get_post(); $my_Mail->to = get_userdata( $mypost->post_author )->data->user_email; $my_Mail->send(); return $Mail; } } add_filter( 'mwform_admin_mail_mw-wp-form-xxx', 'my_mail', 10, 3 );

発生している問題・エラー

上記コードを入れた状態で実際の問い合わせを行うと、

申込完了ページに遷移する際に、
「サイトに技術的な問題が発生しています。」

となってしまいます。
上記コード入れてない状態だと正常に稼働します。

取り急ぎの状況説明としては以上です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

mwform_admin_mail_mw-wp-form-xxxフックにて

function my_mail( $Mail, $values, $Data ) { if( is_single() ) { $my_Mail = clone $Mail; $mypost = get_post(); $my_Mail->to = get_userdata( $mypost->post_author )->data->user_email; $my_Mail->send(); return $Mail; } } add_filter( 'mwform_admin_mail_mw-wp-form-xxx', 'my_mail', 10, 3 );

こんな感じ?

↓は?

function my_mail( $Mail, $values, $Data ) { $my_Mail = clone $Mail; $mypost = get_post(); $my_Mail->to = get_userdata( $mypost->post_author )->data->user_email; $my_Mail->send(); return $Mail; } add_filter( 'mwform_admin_mail_mw-wp-form-xxx', 'my_mail', 10, 3 );

とりあえずログを見るくらいはやらんと

投稿2019/08/05 11:31

編集2019/08/06 03:07
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomotarou

2019/08/05 13:12

ありがとうございます。 頂いたもので試してみましたが、フォームそのものがエラーで起動しなくなりうまく行かずというところです。 少し考えてみます。ありがとうございます。
退会済みユーザー

退会済みユーザー

2019/08/05 13:42

xxxはフォームのIDに変更せよ
tomotarou

2019/08/05 16:08

ありがとうございます。 xxxフォームのIDに変更しているのですが、確認ページに遷移する際にエラーが発生してしまってうまく行かない状況です。
CHERRY

2019/08/05 21:37

(横からですが) エラーが出ているのであれば、質問を編集して、試した内容とその結果(表示される内容やエラーメッセージなど)を元の質問の最後に追記していただけないでしょうか? なお、エラーが出ている場合は、ログファイルに記録されているメッセージも記載してください。
tomotarou

2019/08/06 13:21

申し訳ありません。ログもチェックすべきでした。 また、ありがとうございます。 頂いたものを参照して解決することができました。 この度はお手数おかけいたしました。 ありがとうございました。
guest

0

postIDからではなく、投稿者からメールアドレスを取得するほうがいいのではないでしょうか?
get_users()でメールアドレスは取得できます。
こちらをご参考下さい。

投稿2019/08/05 05:01

beginner_t

総合スコア716

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomotarou

2019/08/05 13:12

ありがとうございます。 初心者なので、もしかしたら頓珍漢な回答かもしれませんが、 フォームがあるのは投稿ページではなく、投稿ページ内の問合せボタンを押した先の遷移先のページになるので、 URLにpost_IDの引数がつくようにページ遷移させて、 その渡したpost_idから元のページの記事の投稿者を判別して、そこからメールアドレスを取得しようと思った次第なのですが、なかなかうまく行かずというところで悩んでおりました。 get_users()でも情報は引き出せるのですが、よくわからずというところでした。 ありがとうございます。
beginner_t

2019/08/05 22:57 編集

すみません。get_users()でとれるというのは、メールアドレス自体が取れるということではなく、ユーザー情報自体がこれに入っているという意味です。 返り値をuser_emailに指定することで実際のループ内で使うには<?php $author_id = $post->user_email; ?>のような形になります。
beginner_t

2019/08/05 23:04 編集

なので、フォームに遷移する際にメールアドレスを渡せばいいと思います。
tomotarou

2019/08/06 13:19

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問