简单添加代码-让评论被回复后收到一封邮件

最新动态:感谢@所以呢,让笔者找到了原文作者,本文来源:http://kan.willin.org/?p=1295

下面的方法是一年多前在论坛上找到的。当时楼主用TXT文件把代码整理出来,供大家下载,笔者下载保存到本地了。笔者也是转载的,至今不知道版权是哪位老师的,时隔一年,重新整理了一下这篇文章,希望对各位有帮助。

访客评论被回复后能收到一封邮件,能留住访客,对网站的好处就不用说啦!我网上找了一圈,这样的插件很多,优点是方便,缺点嘛!大家都 知道!今天来介绍一下!可以通过简单的修改代码实现,效果见本站!

第一要服务器支持mail() 功能. 测试方式: 在登入页故意按下’忘记密码’, 收到邮件就有mail() 功能; 没收到邮件的就不要往下看啦!

第二步 把下面的代码粘贴到functions.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
30
31
32
33
34
35
36
37
38
39
40
41
function comment_mail_notify($comment_id) {
$admin = 'willin'; // 
$admin_notify = '1'; // 
$comment = get_comment($comment_id);
$comment_author = trim($comment->comment_author);
$parent_id = $comment->comment_parent;
$to = trim(get_comment($parent_id)->comment_author_email);
global $wpdb;
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 (($comment_author != $admin && isset($_POST['comment_mail_notify'])) || ($comment_author == $admin && $admin_notify == '1'))
$wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify='1' WHERE comment_ID='$comment_id'");
$notify = get_comment($parent_id)->comment_mail_notify;
$spam_confirmed = $comment->comment_approved;
if (($parent_id != '') && ($spam_confirmed != 'spam') && ($notify == '1')) {
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); //.
$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 />
' . trim($comment->comment_content) . '<br /></p>
<p>您可以点击 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '"> 查看回复完整內容</a></p>
<p>欢迎再度光临 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
<p>今日推荐:2011年最佳十大<a href="http://www.hostjike.com/" target="_blank">美国主机排名</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 );
}
}
add_action('comment_post', 'comment_mail_notify');
/* 自動加勾選欄 */
function add_checkbox() {
echo '<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>';
}
add_action('comment_form', 'add_checkbox');
// -- END ----------------------------------------

二、无勾选项, 由管理者決定在什么条件下发邮件:

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
30
31
32
33
34
35
36
function comment_mail_notify($comment_id) {
$admin = 'willin'; // 改為你的名字.
$comment = get_comment($comment_id);
$comment_author = trim($comment->comment_author);
$parent_id = $comment->comment_parent;
$to = trim( get_comment( $parent_id )->comment_author);
$spam_confirmed = $comment->comment_approved;
if (($parent_id != '') && ($spam_confirmed != 'spam') && ($to != $admin) && ($comment_author == $admin)) {
/* 上面的判斷式,決定發出郵件的必要條件:
($parent_id != '') : 回覆的才可發.
($to != $admin) : 不發給 admin.
($comment_author == $admin) : admin 的回覆才可發.
可視個人需求修改以上條件.
*/
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); //.
$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 />
' . trim($comment->comment_content) . '<br /></p>
<p>您可以点击 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '"> 查看回應完整內容</a></p>
<p>欢迎再度光臨 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
<p>今日推荐:2011年最佳十大<a href="http://www.hostjike.com/" target="_blank">美国主机排名</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 );
}
}
add_action('comment_post', 'comment_mail_notify');
// -- END ----------------------------------------

三、所有回复都发邮件:

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
function comment_mail_notify($comment_id) {
$comment = get_comment($comment_id);
$comment_author = trim($comment->comment_author);
$parent_id = $comment->comment_parent;
$spam_confirmed = $comment->comment_approved;
if (($parent_id != '') && ($spam_confirmed != 'spam')) {
$wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); 
$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 />
' . trim($comment->comment_content) . '<br /></p>
<p>您可以点击 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '"> 查看回應完整內容</a></p>
<p>歡迎再度光临 <a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
<p>今日推荐:2011年最佳十大<a href="http://www.hostjike.com/" target="_blank">美国主机排名</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 );
}
}
add_action('comment_post', 'comment_mail_notify');
// -- END ----------------------------------------

相关内容

作者: 谢泽波立即收听 谢泽波立即收听
上帝为你关上一道门,定然会为你打开一扇窗.


» 转载请注明来源:年轻人的博客 » WordPress » 简单添加代码-让评论被回复后收到一封邮件
» 本文链接地址:http://www.nianqing.info/shoudaoyoujian.html

73 次 吐槽

  1. Hello Beautiful 说道:

    才添加这个功能没多久。

  2. 洋洋 说道:

    我用的是用插件。。但是郁闷的是用gmail收不到我的邮件。。。可能是因为以前建论坛。注册时就发邮件到注册人的邮箱。结果gmail就认为我的是垃圾邮件了。。

  3. 匿名 说道:

    学习一啊,看完了也不是很懂,继续学习

  4. 网罗天下博客 说道:

    这个方法好像不适用于ZBLOG,看来我被 WordPress 包围了!

  5. 所以呢 说道:

    热,转载的wii大师的@!还加了自己的链接进去

    • NianQing 说道:

      惭愧惭愧!谢谢您,我已经将原文链接加上!

      • 所以呢 说道:

        哈,博主你真的太客气了。或许你还不知道我是谁,不知你还记得以前你和我交换友情链接【站点是美国主机评测网】,后来出去工作没时间管理就出售了。博主现在做得不错嘛,我有时间也来了你的博客的,以后互相学习啊!

        • NianQing 说道:

          已经出售了?一直把评测网链接挂着呢,最近才发现很久没更新了,所以转移到了内页…以后互相学习啊!

          • 所以呢 说道:

            恩,出售了5个月之多!那人拿去把描述改了,就被百度降权了,收录也少老!现在专心在搞这个博客,感觉自己做广泛了,也老火啊!

  6. 创意铺 说道:

    win主机是不是不能实现?
    求教….

    • NianQing 说道:

      WIN主机肯定是可以实现的,具体怎么做,我也没具体操作过

  7. 瘦身咖啡 说道:

    来关注了额 嘿嘿

  8. www.kafei88.com 说道:

    嗯 學習了

  9. 代码狠让人头疼 呵呵

  10. SOHO一族 说道:

    这个法子还是太复杂了点。

  11. wmtimes 说道:

    这还叫简单呢。那么一大堆字母。

  12. haveabb 说道:

    测试一下 嘻嘻 看看你做的成不成功

  13. asics shoes buy 说道:

    测试一下~~~~~~~~~~~~~

  14. 随风飘荡 说道:

    博主的文章真好,支持!

  15. 呀 不会又发不出去吧!

  16. 又是代码 真是怕怕了!

  17. 恋月 说道:

    我的添加了也没用 哈哈 限制了php脚本访问网络 只能本地访问 wp后台更新提示都不好有的

  18. 我不在乎 说道:

    这个太好了,一直想找个不用插件、文章评论不发邮件、评论被回复发邮件的方法,去试试。

  19. 先看看 说道:

    邮箱里面经常被塞满

  20. 宁波LED 说道:

    这东东看起来还不错,不过我貌似不会搞,太多代码,纠结

  21. Hex Bolts 说道:

    楼上貌似测试成功了,我也搞到我代码中去试试。。。

  22. zhangnan 说道:

    这些代码忒难的。

  23. liangkun 说道:

    我的在登录界面可以收到邮件,可是就是不能让别人收到我评论时的邮件.郁闷,

  24. P.H 说道:

    这是willin的无插件版本,昨天试了一下,在我的主题下貌似没啥反应,只能放弃了..

    • NianQing 说道:

      这个和主题没关系的! 只要主机支持就好了!

      • P.H 说道:

        仔细看了一下代码,没看明白,wp_mail这个函数,是WP系统自带的吗?,add_action(‘comment_form’, ‘add_checkbox’);还有这个是不是应该放在comments里~ 怪怪的,刚开始玩WP,对结构还不是很了解…

        • NianQing 说道:

          这也是朋友教我的!我也看不懂,我用起来还是蛮舒服的!

          如果担心编码问题,,留个邮箱给你!我用记事本,打包发给你!

    • NianQing 说道:

      能收到邮件吗? (*^__^*) 嘻嘻……

  25. liangkun 说道:

    这个怎么实现的,请详细告诉下.多谢了,

    • NianQing 说道:

      登录后台>>外观>>编辑>>functions.php

      把相应的代码粘贴到functions.php文件<?php后面,就搞定了!

      你再试试!

      偶自己就这样弄的,你能收到邮件吗?

      • liangkun 说道:

        我能收到你的回复邮件通知,可是我这里让你刚才说的也那样做了,现在访问http://www.liangkun.net出现这样的错误提示:
        Fatal error: Call to undefined function add_action() in /wp-includes/functions.php on line 37

        • NianQing 说道:

          你先把functions.php还原,把上面代码中全角换成半角!再试试!

  26. 网络青年 说道:

    这么好的东西 可惜我的空间不支持 –

  27. PLAYBOY 说道:

    可以收到 真是太奇妙了~~
    那个要怎么改?我的怎么不能收?

    • NianQing 说道:

      把下面的代码粘贴到 functions.php文件<?php后面,就好了!

  28. PLAYBOY 说道:

    if (($parent_id != ”) && ($spam_confirmed != ’spam’) && ($notify == ‘1′)) {
    $wp_email = ‘no-reply@’ . preg_replace(‘#^www\.#’, ”, strtolower($_SERVER['SERVER_NAME'])); //e-mail 发出点, no-reply 可改为可用的e-mail.

    这里要怎么改?

  29. PLAYBOY 说道:

    测试一下 嘻嘻 看看你做的成不成功~~快点回复啊~~

Leave a Reply

Copyright © 2011‐2012 NianQing All Rights Reserved. 日志存档 | Sitemap | Rss
Hosting By BlueHost 载入页面时间:0.801秒.