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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

460閲覧

非会員制投稿サイト内の投稿記事にコメントした際に、ACFフォームで作成したテキストに入力されたアドレスにコメント通知を飛ばしたい。

NNC

総合スコア22

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/07/28 11:14

非会員制投稿サイトを作成しています。

やりたい事

会員登録をせずに、ACFフォームにてフロント側から投稿ができる仕様にしていますが、
投稿された記事にコメントがあった際、ACFで作成したメールアドレスにコメントがあった通知を飛ばす仕様にしたいと思っています。

送信されるメールの送信者名と送信元メールアドレスを変更する方法は、いくつも見つける事ができたのですが、
送信先を変更、且つ任意の送信先に変更する方法が見つかりませんでした。

<label for="acf-field_5f0034d07dcda">メールアドレス</label></div> <div class="acf-input"> <div class="acf-input-wrap"><input type="text" id="acf-field_xxxxxxxxxxxxx" name="acf[field_xxxxxxxxxxxxx]" placeholder="コメント通知を受け取る場合は入力してください。"/></div></div> </div>

上記で入力した場合のみ、
コメントがされた際の通知が上記テキストボックスに入力したアドレスに飛ぶようにしたいと思います。
※入力されていない場合はコメント通知は無しで大丈夫だと思います。

また、不要な情報かもしれませんが、コメント関連はfunctions.phpに下記のように記述して、通知内容を変更しています。

function custom_comment_moderation_text( $notify_message, $comment_id ) { global $wpdb; $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $comment = get_comment($comment_id); $post = get_post($comment->comment_post_ID); $comment_author_domain = @gethostbyaddr($comment->comment_author_IP); $comments_waiting = $wpdb->get_var("SELECT count(comment_ID) FROM $wpdb->comments WHERE comment_approved = '0'"); $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); $comment_content = wp_specialchars_decode( $comment->comment_content ); switch ( $comment->comment_type ) { case 'trackback': // トラックバック $notify_message = "「{$post->post_title}」に新しいトラックバックがありました。\r\n"; $notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n"; $notify_message .= "\r\n"; $notify_message .= "トラックバック元: {$comment->comment_author}\r\n"; //$notify_message .= "IP: {$comment->comment_author_IP} ({$comment_author_domain})\r\n"; //$notify_message .= "URL: {$comment->comment_author_url}\r\n"; $notify_message .= "トラックバックの概要: \r\n"; $notify_message .= "{$comment_content}\r\n"; $notify_message .= "\r\n"; break; case 'pingback': // ピンバック $notify_message = "「{$post->post_title}」に新しいピンバックがありました。\r\n"; $notify_message .= get_permalink($comment->comment_post_ID) . "\r\n\r\n"; $notify_message .= "\r\n"; $notify_message .= "ピンバック元: {$comment->comment_author}\r\n"; //$notify_message .= "IP: {$comment->comment_author_IP} ({$comment_author_domain})\r\n"; //$notify_message .= "URL: {$comment->comment_author_url}\r\n"; $notify_message .= "ピンバックの概要: \r\n"; $notify_message .= "{$comment_content}\r\n"; $notify_message .= "\r\n"; break; default: // コメント $notify_message = "「{$post->post_title}」に新しいコメントがありました。\r\n"; $notify_message .= "\r\n"; $notify_message .= "コメントの確認\r\n"; $notify_message .= "↓↓↓↓↓↓↓\r\n"; $notify_message .= get_permalink($comment->comment_post_ID) . "#comments\r\n\r\n"; $notify_message .= "\r\n"; //$notify_message .= "投稿者: {$comment->comment_author}\r\n"; //$notify_message .= "IP: {$comment->comment_author_IP} ({$comment_author_domain})\r\n"; //$notify_message .= "メールアドレス: {$comment->comment_author_email}\r\n"; //$notify_message .= "URL: {$comment->comment_author_url}\r\n"; //$notify_message .= "【コメント】 \r\n"; //$notify_message .= "{$comment_content}\r\n"; //$notify_message .= "\r\n"; $notify_message .= "★☆{$blogname}☆★\r\n"; $notify_message .= home_url() . "\r\n"; $notify_message .= "\r\n"; break; } return $notify_message; } add_filter( 'comment_moderation_text', 'custom_comment_moderation_text', 10, 2 ); add_filter( 'comment_notification_text', 'custom_comment_moderation_text', 10, 2 );

登録制のサイトであれば良いのですが、
非会員制と言う部分が大きなネックと感じており、
どうにか出来ないかと模索しておりますが、
先述の通り送信者名と送信元メールアドレスを変更する方法ぐらいしかたどり着けず、ヒントすら見えない状態です。

ぜひ、お知恵をお借りできれば幸いです。

お手数では御座いますがよろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

その投稿に紐づけられたカスタムフィールドにメールアドレスが保存されているのなら
get_post_meta()等で取得してcomment_notification_recipientsで動的に送信先を変更可能

https://developer.wordpress.org/reference/hooks/comment_notification_recipients/

失敬

(string[]) An array of email addresses to receive a comment notification.

と書いてあった。

だからこんな感じで。

add_filter( 'comment_notification_recipients', function( $email, $comment_id ) { $comment = get_comment( $comment_id ); $post = get_post( $comment->comment_post_ID ); $post_id = $post->ID; //$email = get_post_meta( $post_id, 'メタキー', true ); $email[] = get_post_meta( $post_id, 'メタキー', true ); return $email; }, 10, 2 );

投稿2020/07/28 15:14

編集2020/07/29 08:17
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

NNC

2020/07/29 07:16

ご返信ありがとうございます。 頂きました内容を元に、色々検証してみましたが 通知メールが届かない状態でした。 >カスタムフィールドにメールアドレスが保存されているのなら この部分が原因なのかと思い ACFにて ラベル:メールアドレス フィールド名:my_mail キー:field_1234567890Ab タイプ:メール と普通の方法で作成し single.phpなどに<?php the_field('my_mail'); ?>で確認した所、 問題なく表示されたので、カスタムフィールドにメールアドレスが保存されていると言う認識でいるのですが、 そうなりますと、他に考えられる原因などはございますでしょうか? 一応、テーマもTwenty Twentyなどに変更してみて functionsに記載を行った上でも検証してみましたが、変わらず通知メールが届きませんでした…。
NNC

2020/07/29 08:41

お世話になります。 更なるご返信ありがとうございます。 頂きました内容と https://www.muchacolla.com/work/wordpress/385/ こちらを参考に ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ function comment_other_mail( $emails, $comment_id ) { $comment = get_comment( $comment_id ); $post = get_post( $comment->comment_post_ID ); $post_id = $post->ID; $emails[] = get_post_meta( $post_id, 'カスタム名', true ); return $emails; } add_filter('comment_notification_recipients', 'comment_other_mail', 10, 2); ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 上記で記述を行った所、通知の方が届きました。 お陰様で行いたい答えにたどり着く事が出来ました。 お力添え頂き、お礼申し上げます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問