Ajax comments 評論回應郵件通知
這個 "評論回應郵件通知", 只適用在《WordPress 內置嵌套評論專用 Ajax comments》.
使用前請確定服務器的 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 共用.

找好久了,直接K掉插件~~
文章很有帮助哦,测试回复个~
博主还没回来```
请教一下,这个是需要php5的吧
我也去改改,把那插件给卸了~~~
Willin达人,是否可以做一个不需要內置嵌套評論就可以用的Ajax评论+邮件通知评论者的呢??谢谢.
嵌套才能找到回覆給誰. 不用嵌套的話, 就用 @ 回覆, 好像有插件啊~
不是嵌套評論,另有什以可以实现评论邮件回复,只用代码的那种!
連代碼都不用, 在後台打勾就有了.
在哪里啊?
評論選項 -> 任何時候都給我發送電子郵件 -> [ v ] 有人發表評論時
额,我需要的功能是有其他留言者能收到新留言的邮件,而不是自己收到,后台那个事有新评论了给管理员发邮件...
不嵌套評論可以用comment_mail_notify评论邮件回复嗎?
不行~ WP 內置嵌套評論專用.
$admin = 'willin';//改為你的名字.
这个名字是指WP登录名还是在wordpress显示的名字?
是前台會顯示的名字. 簡體翻譯好像是 '暱稱' 吧~
恩,做好了
额,添加个“邮件通知对方”选项也不错~
利用數據庫的 "comment_mail_notify" 這欄而已.
原来已经更新了呀……这个功能还是挺有用的!
哎……我已经对评论邮件回复绝望了……有充足时间的时候再研究吧……不知道亿家的190服务器支持不……我也不知道怎么查= =
在後台有個評論通知的先勾上, 看別人留言後你可否收到郵件.
我这边按照要求做了,但是似乎还是无法发送邮件~
首先可以肯定的是我的主机有发送邮件的功能,是不是要对那上面的代码做部分修改?
照理說直接 copy 就能用了, 除非是被判斷成 spam 郵件, 在收信時被刪了. 那就要把 e-mail 發出點改為發信服務器上可用的 e-mail. 先試試, 可能是其它問題也說不定.
今天问过几个人,他们说是主题的缘故~
我现在也不能肯定,反正就是不正常
博主。帮我看看。为什么我的怎么搞都不行。邮件一直收不到。我已经按你的方法试过了。有ajax效果。但就是收不到回复的邮件通知。你看看是不是我的网站主题问题。因为我的回复格式和大家的不一样。是··@名字 :
这种回复。。我用你的方法能实现吗?
@ 回覆是不能用的, 只適用在《WordPress 內置嵌套評論專用 Ajax comments》
willin大师,我用了你的《WordPress 內置嵌套評論專用 Ajax comments》--这个有效果了.然后再根据你这个帖子做了修改,可是没有回复邮件的效果,为什么呢?
mail() 可用嗎? 後台設定的郵件通知能不能收到?
这个不错,收藏了,哇哈哈。。