🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

2回答

3360閲覧

WordPressのコメントのメール通知文を編集していた際のトラブルについて教えてください。

chanshiCHANSHI

総合スコア4

WordPress

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2019/10/31 05:53

編集2019/11/01 00:15

問題

仕事でWordPressを使っています。
コメントの通知メールについて質問です。
functions.phpに以下のサイトの内容を元に自分でカスタマイズし、最初は上手くいってました。
http://wpcj.net/1154

しかし、とある理由で「cbnet Multi Author Comment Notification」というプラグインをインストールし、有効化したところ、上記の記述内容が反映されなくなってしまいました。

wp-includes/pluggable.phpに先ほどのサイトと似た内容があり、ここに記述するとパッと見は直ったように見えますが、実はコメントの入力欄に、「名前」、「メールアドレス」、そして「会社名」を追加しなくてはなりません。
この「会社名」がどこをいじればメール文に表示されるのか知りたいです。

下記がfunctions.phpに記述した内容です。

/** * コメント確認メールの件名を変更します。 */ function custom_comment_moderation_subject( $subject, $comment_id ) { // ブログ名(サイト名) $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); // コメント $comment = get_comment($comment_id); // 投稿 $post = get_post($comment->comment_post_ID); // トラックバック、ピンバック、コメントそれぞれで件名を変更 switch ( $comment->comment_type ) { default: // コメント return "投稿「{$post->post_title}」に新しいコメントがありました"; } } add_filter( 'comment_moderation_subject', 'custom_comment_moderation_subject', 10, 2 ); /** * コメント確認メールの本文を変更します。 */ function custom_comment_moderation_text( $notify_message, $comment_id ) { global $wpdb; // コメント $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 ); // 会社名 $comment_company = get_comment_meta( get_comment_ID(), 'yourcompany',true); if ( $yourcompany ) { $author .= ' (' .$yourcompany . ')'; } return $author; //コメント者の後に続けて出力。 // トラックバック、ピンバック、コメントそれぞれで本文を変更 switch ( $comment->comment_type ) { default: // コメント $notify_message = "投稿「{$post->post_title}」に新しいコメントがありました。\r\n"; $notify_message .= "コメント者: {$comment->comment_author}\r\n"; $notify_message .= "会社名: {$comment->comment_company}\r\n"; $notify_message .= "コメント: {$comment_content}\r\n"; $notify_message .= "この投稿へのすべてのコメントはこちら:" .get_permalink($comment->comment_post_ID) . "\r\n"; $notify_message .= "\r\n"; break; } return $notify_message; } add_filter( 'comment_moderation_text', 'custom_comment_moderation_text', 10, 2 );

現状のメール文

(ここから)

投稿「投稿タイトル」に新しいコメントがありました。

コメント者: 〇〇〇
会社名:
コメント: あああああ

この投稿へのすべてのコメントはこちら:
https://example.co.jp/aaaaa

(ここまで)

「会社名: 」の部分が空欄になっていますが、ここに会社名入力欄で入力した内容が出力されるようにしたいです。

質問のまとめ

初投稿なためどのように質問すべきかわかりませんが、要するに、
1上記メール文の「会社名: 」が空欄になっているが、ここに入力欄で入力した内容が出力されるようにしたい
2pluggable.phpに上記functions.phpと同じことを記述してメール文が表示されているがそれでいいのか
3そもそも何故「cbnet Multi Author Comment Notification」というプラグインを使うと上記functions.phpに入力した内容が反映されなくなるのか
4何か他にコメントした際に送られる通知メール文を変更、編集する良い方法があるか

以上の内容をご教示いただきたいです。

参考になるかわかりませんが、
WordPressのバージョンは4.9.12です。
仕事で使っているためバージョンの変更は原則できません。

長文になってしまいましたが、どうぞよろしくお願いいたします。

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

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

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

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

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

kei344

2019/10/31 19:40

(質問文は編集できます)質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。 また、例示用ドメインはご自身で所有されていない限り example.com, example.jp, example.co.jp など例示用に予約されたドメイン名を利用してください。 http://www.atmarkit.co.jp/fwin2k/win2ktips/801exampledom/exampledom.html https://blog.jxck.io/entries/2017-09-27/example-local-test-domains.html https://blog.ko31.com/201304/sample-domain-example/
CHERRY

2019/11/02 07:09

Wevサーバーのログファイルには、どのようなメッセージが、記録されていますか? また、WordPress をデバッグモードにするとどのようなメッセージが表示されますか?
guest

回答2

0

同じ状況が再現できないため、適切な回答にはならないかもしれませんが、提示されている部分の問題点のみ回答します。


1上記メール文の「会社名: 」が空欄になっているが、ここに入力欄で入力した内容が出力されるようにしたい

提示のコードでその出力にはならないと思います。なぜなら、custom_comment_moderation_textにて$author .= ' (' .$yourcompany . ')';と定義していない変数に文字列を追加しようとしている上、return $author;でそれ以降の処理を無視しています。(return;があると関数は終了するのでそれ以降にかかれたものは処理されません)

なので、それ以外のところに書かれたコードが効いているのでしょう。


2pluggable.phpに上記functions.phpと同じことを記述してメール文が表示されているがそれでいいのか

WordPressの本体ファイルを編集しているということであれば、やめたほうがよいです。なぜならアップデート(更新)が難しくなるからです。(そういうこともあってアップデートできなくなってしまっているのでは)
PHP自体のアップデートも早くなっている昨今、本体のアップデートをしないことは「急に動かなくなった」ということが発生してもおかしくない状況を作ります。PHPをアップデートしない、ということをすると、致命的なバグ等が発見された場合、対処しないのでしょうか。
長くそのサービスを続けるのであれば、サーバ/PHP/WordPressのアップデートはこまめにするほうが、結局手間(&各種コスト)が少なくなると思います。


3そもそも何故「cbnet Multi Author Comment Notification」というプラグインを使うと上記functions.phpに入力した内容が反映されなくなるのか

特に使用した事も無いので、予想でしか有りませんが、comment_moderation_textのフックをそのプラグインが使用していない、もしくは上書きするように設定しているかどちらかだと思います。
プラグイン独自のフックがある場合も有るし、無い場合もあるので、プラグインのコードを読んで、そのあたりは確認するしかないと思います。(もしくは開発者に確認するか)

投稿2019/11/02 09:04

kei344

総合スコア69596

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

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

chanshiCHANSHI

2019/11/12 08:24

返信遅くなりすいません。 上記の文読みました。 何とか頑張ってみます。
bibikusu

2020/06/26 06:02

僕も同じようなことしたいだけど 難しいですねぇ~ 参考になるような情報あったら 是非、追記をお願いしますm(__)m
guest

0

「cbnet Multi Author Comment Notification」のソースコードを読みましたが、特段"comment_moderation_text"のフィルターを上書きしていませんでしたので、別の理由でfunctions.phpの内容が反映されなくなったのではないでしょうか? 他に追加したプラグインや設定の変更がなかったか、再確認した方がいいと思います。

さらに、wp-includes/pluggable.php を書き換えた際に、"comment_moderation_text"に関する部分を間違って書き換えてしまったために、一層おかしな状況に陥っているのではないでしょうか?

kei344さんが指摘したように、Wordpressのコアフィル群を直接書き換えるのはNGです。
最悪サイトが正常に動作せず再インストールする羽目になりますし、Wordpressのアップデートに追従させることができず、セキュリティ問題に対応できなくなります。業務でやっているならなおさら悪手です。

まずは、wp-includes/pluggable.phpやプラグインの状態を元に戻してから、kei344さんが1.で指摘したように、functions.phpに記述したコードの問題点を修正しましょう。
業務でWordpressをカスタマイズしていらっしゃるようなので、単なるコピペでなく正しくPHPのコードを理解して書くことをおすすめします。

投稿2019/11/12 01:34

編集2019/11/12 01:35
AnMoreNight

総合スコア109

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

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

chanshiCHANSHI

2019/11/12 08:25

ご回答ありがとうございます。 何とか頑張ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問