クリアメモリ

プログラミングやモーショングラフィックス、便利なアプリケーションなど雑多に記録するブログ

【WordPress】コメント返信時に通知を送信するプラグインComment Email Replyの使い方

f:id:clrmemory:20170422185334p:plain 

先日WordPressで運営している記事に、コメントをいただきました。

そこで、コメントを承認し返信しましたが、どうやらコメントの返信では相手に通知が届かないようなんですよね。

 

そこで今回は、WordPressでコメントに返信したときに通知を送信できるプラグイン「Comment Email Reply」を紹介します。

 

 

はじめに

 

今回紹介する内容は「コメント返信時に通知を送る方法」です。

インストールなどは無料でできますが、若干注意点がありますので必ず確認してください。

 

私は、これまでブログにコメントをいただいた際に、返信したら勝手に通知(メール)が送信されるものだと思っていたのですが、どうやら通知は届いておらず、コメントいただいた方が再度同じ記事に訪れないと返信を確認できないみたいでした。

 

自分に返信してみた

 

通知を確認するために、自分で自分にコメントし(現在は削除済み)、それに対して返信してみましたが

 

結果は「全く通知されない」でした。

 

つまり、これまで記事にコメントいただいた方への返信は通知されていないということで、言ってしまえばコメントを「無視」していたことと同じことです。

返信が通知されないということを知り驚愕しました。

 

そこでコメントの返信時に通知を送れるようになるのが「Comment Email Reply」というプラグインです。では早速「Comment Email Reply」をインストールしましょう。

 

Comment Email Replyをインストール

 

まずWordPressの管理画面から「新規追加」を開いてください。

 

 

右上部にある検索欄に「Comment Email Reply」と入力し、以下のようなプラグインを探しましょう。

 

 

※検索結果の上位には表示されませんでした。

また、似たようなプラグインや別のプラグインがあるので、間違えないようにしてください。

 

正しいプラグインがインストールできたら「有効化」しましょう。

 

実はたったこれだけで、コメントの返信時に「通知」を送信できるようになっているんです。特に設定とかは無いのですが、これだけだと通知内の文面が「英語」になっています。

 

通知が英語

 

Comment Email Replyをインストールしただけの状態だと、通知は以下のような英語の文面になってしまいます。

 

 

一部編集を加えていますが、このような英語のメールが届きます。

コメントした記事のタイトルやURLが記載されているとはいえ、英語で送信されてきたメールのリンクを開くのは抵抗がありますよね。

 

通知を受け取ってくれたとしても、開きたくないと思わせてしまうのではプラグインを導入する意味が無いので、プラグインを編集してメールを日本語に書き換えましょう。

 

Comment Email Replyを編集

 

Comment Email Replyで送信するメールで日本語を使用するためには「プラグインのコードを書き換え」が必要です。

失敗したとしても、プラグインを再インストールすれば治るかと思いますが、必ずバックアップを取った上ですべて自己責任でお願いします。

 

ではプラグインを編集していきましょう。

管理画面から「プラグイン」を選択し、インストールされたComment Email Replyプラグインの「編集」をクリックしてください。

 

 

プラグイン編集ページが表示されるので、右側のプラグインファイルから「comment-email-reply/cer_plugin.php」を開きます。デフォルトで表示されているかもしれません。

cer_plugin.phpには以下のようなコードが書かれていると思いますので、その中から先ほど紹介した画像にあるテキストを探しましょう。

 

load_plugin_textdomain('cer_plugin', false, basename( dirname( __FILE__ ) ) . '/languages' );

# Fire Email when comments is inserted and is already approved.
add_action('wp_insert_comment','cer_comment_notification',99,2);

function cer_comment_notification($comment_id, $comment_object) {
 if ($comment_object->comment_approved == 1 && $comment_object->comment_parent > 0) {
 $comment_parent = get_comment($comment_object->comment_parent);

 $mailcontent = __('Hello ','cer_plugin').' '.$comment_parent->comment_author.
 ',<br>'.$comment_object->comment_author.' '.__(' replied to your comment on','cer_plugin').
 ' <a href="'.get_permalink($comment_parent->comment_post_ID).'">'.get_the_title($comment_parent->comment_post_ID).
 '</a>:<br><br>'.$comment_object->comment_content.'<br><br>'.__('Go to it or reply:','cer_plugin').
 ' <a href="'.get_comment_link( $comment_parent->comment_ID ).'">'.get_comment_link( $comment_parent->comment_ID ).'</a>';

 $headers = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
 $headers .= 'From: '.get_option('blogname').' <'.get_option('admin_email').'>' . "\r\n";

 wp_mail($comment_parent->comment_author_email,'['.get_option('blogname').'] '.__('New reply to your Comment','cer_plugin'),$mailcontent,$headers);
 }
}
(...略)
?>

 

具体的には

・Hello

・replied to your comment on

・Go to it or reply

・New reply to your Comment

あたりですかね。

 

ではこれらのテキストを日本語に書き換えてみましょう。

 

日本語のメールにする

 

私の場合、通知で送信されるメールの文面は以下のようにしてみました。

 

 

英語のメールに比べて、かなり親近感のある内容になっていませんか。

このように編集する場合、先ほどのコードを以下のように書き換えれば実装できます。

 

 
load_plugin_textdomain('cer_plugin', false, basename( dirname( __FILE__ ) ) . '/languages' );

# Fire Email when comments is inserted and is already approved.
add_action('wp_insert_comment','cer_comment_notification',99,2);

function cer_comment_notification($comment_id, $comment_object) {
 if ($comment_object->comment_approved == 1 && $comment_object->comment_parent > 0) {
 $comment_parent = get_comment($comment_object->comment_parent);

 $mailcontent = __('こんにちは','cer_plugin').' '.$comment_parent->comment_author.
 'さん'.
 '<br>'.__('<br>コメントに返信が届きました:<br>','cer_plugin').
 ' <a href="'.get_permalink($comment_parent->comment_post_ID).'">'.get_the_title($comment_parent->comment_post_ID).
 '</a>:<br><br>'.$comment_object->comment_content.'<br><br>'.__('サイトから確認・返信する場合はこちら:','cer_plugin').
 ' <a href="'.get_comment_link( $comment_parent->comment_ID ).'">'.get_comment_link( $comment_parent->comment_ID ).'</a>';

 $headers = 'MIME-Version: 1.0' . "\r\n";
 $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";
 $headers .= 'From: '.get_option('blogname').' <'.get_option('admin_email').'>' . "\r\n";

 wp_mail($comment_parent->comment_author_email,'['.get_option('blogname').'] '.__('あなたのコメントに返信がありました','cer_plugin'),$mailcontent,$headers);
 }
}

# Fire Email when comments gets approved later.
add_action('wp_set_comment_status','cer_comment_status_changed',99,2);

function cer_comment_status_changed($comment_id, $comment_status) {
 $comment_object = get_comment( $comment_id );
 if ($comment_status == 'approve') {
 cer_comment_notification($comment_object->comment_ID, $comment_object);
 }
}
?>

 

自己流のカスタマイズが必要無い場合は、このコードをコピーしても良いかもしれません。

カスタマイズのコツとしては、テキスト内に「<br>」タグを使うことで、いわゆる「改行」を入れられます。改行を使うと、空間を開けることができるため、活用してみてください。

 

注意点

 

さて、Comment Email Replyを使って、相手に返信通知を送信する際に注意しなければならないことがあります。それは、

 

コメント時に設定したアドレスに返信する

 

という点です。

一見何も問題無いように思えますが、WordPressのコメント欄の場合「実際に使用しているアドレスとは限らない」という問題があります。

 

例えばコメント時に「a@gmail.com」というアドレスでコメントしたとします。

この場合、コメントしたユーザーは「a@gmail.com」のメールアドレスを所持していなくてもコメント出来てしまうんです。

 

コメント時のメールアドレス入力を必須にしたとしても、「X@X.X」という形であれば問題ありません。実際に私の記事のコメントでも「a@a.com」のようなメールアドレスでいただくことがあります。

 

 

では、もしこのアドレスに返信通知を送ってしまったとしたらどのようになるでしょうか。例えば「a@gmail.com」に返信した場合で、実際にそのアドレスを使用している人間が存在している場合、

 

全く知らない人にメールを送信する

 

ということになってしまいます。

 

ですので、私は「質問コメント」や「実際のアドレスっぽいコメント」に返信する場合のみ、Comment Email Replyプラグインを有効化して使用しています。

このプラグインを導入する場合は、このような対処をした方が良いと思います。

 

また、日本語のメールにするためにプラグインを編集した内容は、Comment Mail Replyヲアップデートすると元に戻ってしまうと思います。その点も注意しておきましょう。

 

まとめ

 

今回紹介したComment Email Replyを使うことで、WordPressの記事についたコメントに返信した時に、相手に通知を送信することができました。

せっかくコメントをいただいても、相手に返信した内容が伝わらなくては意味がありませんので、まだ返信通知を導入していない方はぜひ試してみてください。

 

ではまた。

新着記事