Ajax comments 評論回應郵件通知

這個 "評論回應郵件通知", 只適用在《WordPress 內置嵌套評論專用 Ajax comments》.

新版已公佈, 請直接看 《Comment Mail Notify》, 這篇就留著學習參考吧!

使用前請確定服務器的 PHP 已開放 mail() 函數, 郵件功能沒問題.
將下段 copy 到 comments-ajax.php 的最下面, 注意是 php 代碼, 要居於 <?php ... ?> 之中.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//增加:評論回應郵件通知功能
$parent_id = $comment->comment_parent;
$to = trim( get_comment( $parent_id )->comment_author);
$admin = 'willin';//改為你的名字.
if (($comment_parent != 0 ) && ($to != $admin) && ($comment_author == $admin)) {
  /* 上面的判斷式,決定發出郵件的必要條件:
  ($comment_parent != 0 ) :回覆的才可發.
  ($to != $admin) :不發給 admin.
  ($comment_author == $admin) :admin 的回覆才可發.
  可視個人需求修改以上條件.
  */

  $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); //e-mail 發出點, no-reply 可改為可用的 e-mail.
  $to = trim( get_comment( $parent_id )->comment_author_email); //寄給被回應者
  $subject = '您在 [' . get_option("blogname") . '] 的留言有了回應';
  $message = '
  <div style="background-color: #eef2fa; border: 1px solid #d8e3e8; color: #111; padding: 0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
    <p>'
. trim( get_comment( $parent_id )->comment_author) . ', 您好!</p>
    <p>您曾在《'
. get_the_title( $comment->comment_post_ID ) . '》的留言:<br />'
     . trim( get_comment( $parent_id )->comment_content) . '</p>
    <p>'
. $comment_author . ' 給您的回應:<br />'
     . $comment_content . '<br /></p>
    <p>您可以點擊 <a href="'
. get_comment_link($parent_id) . '">查看回應完整內容</a></p>
    <p>歡迎再度光臨 <a href="'
. get_option('home') . '">' . get_option('blogname') . '</a></p>
    <p>(此郵件由系統自動發出, 請勿回覆.)</p>
  </div>'
;
  $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
  $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
  wp_mail( $to, $subject, $message, $headers );
}

$subject 是郵件的標題, $message 是郵件的內容, 你可試著變化一下.
這個又是全世界最短的 "評論回應郵件通知" 了!
ps. 10/8 增加了發出郵件通知的條件.
 
補充:
有些人問到是否可以加個選項, 可讓留言者自己選擇是否要郵件通知.
我的看法是越簡單越好, 程式加多了反而是累贅, 還不如用插件.

加這選項其實也很簡單:
1. 先在 comments.php 的 id="submit" 的上一行插入:

1
<p><input type="checkbox" name="comment_mail_notify" id="comment_mail_notify" value="comment_mail_notify" checked="checked" style="width: auto;" /><label for="comment_mail_notify">有人回复时邮件通知我</label></p>

2. 再把第五行代碼的:

1
if (($comment_parent != 0 ) && ($to != $admin) && ($comment_author == $admin)) {

那一行替換成:

1
2
3
4
5
6
7
8
if ($wpdb->query("Describe {$wpdb->comments} comment_mail_notify") == ''){
$wpdb->query("ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;");
}
if (isset($_POST['comment_mail_notify'])){
$wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify='1' WHERE comment_ID='$comment_id'");
}
$notify = get_comment($parent_id)->comment_mail_notify;
if (($comment_parent != 0 ) && ($to != $admin) && ($comment_author == $admin) && ($notify == 1 )) {

如此而已. 這是源自於 "偶爱偶家" wordpress-thread-comment 的做法,
新增的 comment_mail_notify 資料欄可以和 wordpress-thread-comment 或是 "水煮魚" 的 comment-reply-notification 共用.
 

138 篇回應 (訪客:75 篇, 博主:58 篇, 引用:5 篇)

  1. 無為 ~

    找好久了,直接K掉插件~~

  2. 游否 ~

    文章很有帮助哦,测试回复个~

  3. 迎接 ~

    博主还没回来```
    请教一下,这个是需要php5的吧

  4. 我也去改改,把那插件给卸了~~~ :cool:

  5. 小哀 ~

    Willin达人,是否可以做一个不需要內置嵌套評論就可以用的Ajax评论+邮件通知评论者的呢??谢谢.

  6. edikud ~

    不是嵌套評論,另有什以可以实现评论邮件回复,只用代码的那种!

  7. edikud ~

    不嵌套評論可以用comment_mail_notify评论邮件回复嗎? :?:

  8. 皓辰 ~

    $admin = 'willin';//改為你的名字.
    这个名字是指WP登录名还是在wordpress显示的名字?

  9. 额,添加个“邮件通知对方”选项也不错~

  10. 原来已经更新了呀……这个功能还是挺有用的!

  11. 海派 ~

    :razz: 正在研究。。 :lol: 改天拜会博主。。

  12. 哎……我已经对评论邮件回复绝望了……有充足时间的时候再研究吧……不知道亿家的190服务器支持不……我也不知道怎么查= = :cry:

  13. exia ~

    我这边按照要求做了,但是似乎还是无法发送邮件~
    首先可以肯定的是我的主机有发送邮件的功能,是不是要对那上面的代码做部分修改?

    • willin ~

      照理說直接 copy 就能用了, 除非是被判斷成 spam 郵件, 在收信時被刪了. 那就要把 e-mail 發出點改為發信服務器上可用的 e-mail. 先試試, 可能是其它問題也說不定.

  14. 博主。帮我看看。为什么我的怎么搞都不行。邮件一直收不到。我已经按你的方法试过了。有ajax效果。但就是收不到回复的邮件通知。你看看是不是我的网站主题问题。因为我的回复格式和大家的不一样。是··@名字 :
    这种回复。。我用你的方法能实现吗?

留下評論

:?: :razz: :sad: :!: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: :smile: :evil:
貼圖 表情 ( ps. 若要貼代碼, 請將 "<" 改成 "&lt;" 即可, 此方法在所有 WP 網站均適用. )

Trackbacks/Pingbacks

  1. 建博两周年 | 寨主 --- 2010年 08月 11日
  2. Wordpress 评论回复邮件通知(代码版) - FORECE's 博客日志 --- 2010年 07月 29日
  3. jQuery+Ajax在wordpress中的应用(一) - 电脑网络 - ajax - jQuery - WordPress - Winy Sky --- 2010年 05月 12日
  4. wordpress评论回复邮件通知-代码版 – 三头一匹 --- 2010年 03月 15日
  5. WordPress Theme : SL-Enhance 1.0E 正式发布 — 老孙的博客--Lao Sun's Blog --- 2010年 02月 12日

這篇文章上的評論 RSS feed TrackBack URL