You are here: Home » All Categories » » 整理: WordPress 评论回复邮件通知代码

整理: WordPress 评论回复邮件通知代码

Oct 24th, 2011 16:39 | Leave a comment?(111) Go to comments

这是自用的评论回复邮件通知代码,源码来自 WillinQiqiboy,有兴趣者可以去这两位作者博客看看。

这版本的评论回复通知是支持嵌套和@用户方式的。

用法很简单,把下面的代码扔到主题的 functions.php 里面即可(原则上要打开 WordPress 原生嵌套,具体木有去研究。)

* 代码放到 <?php ?>

 /* 邮件通知 by Qiqiboy */
 function comment_mail_notify($comment_id) {
     $comment = get_comment($comment_id);//根据id获取这条评论相关数据
     $content=$comment->comment_content;
     //对评论内容进行匹配
     $match_count=preg_match_all('/<a href="#comment-([0-9]+)?" rel="nofollow">/si',$content,$matchs);
     if($match_count>0){//如果匹配到了
         foreach($matchs[1] as $parent_id){//对每个子匹配都进行邮件发送操作
             SimPaled_send_email($parent_id,$comment);
         }
     }elseif($comment->comment_parent!='0'){//以防万一,有人故意删了@回复,还可以通过查找父级评论id来确定邮件发送对象
         $parent_id=$comment->comment_parent;
         SimPaled_send_email($parent_id,$comment);
     }else return;
 }
 add_action('comment_post', 'comment_mail_notify');
 function SimPaled_send_email($parent_id,$comment){//发送邮件的函数 by Qiqiboy.com
     $admin_email = get_bloginfo ('admin_email');//管理员邮箱
     $parent_comment=get_comment($parent_id);//获取被回复人(或叫父级评论)相关信息
     $author_email=$comment->comment_author_email;//评论人邮箱
     $to = trim($parent_comment->comment_author_email);//被回复人邮箱
     $spam_confirmed = $comment->comment_approved;
     if ($spam_confirmed != 'spam' && $to != $admin_email && $to != $author_email) {
         $wp_email = 'no-reply@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME'])); // e-mail 發出點, no-reply 可改為可用的 e-mail.
         $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>' . trim($comment->comment_author) . ' 给你的回复:<br />'
             . trim($comment->comment_content) . '<br /></p>
             <p>您可以点击 <a href="' . htmlspecialchars(get_comment_link($parent_id,array("type" => "all"))) . '">查看回复的完整內容</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 );
     }
 }

这篇是过渡文章,为下篇文章的代码做准备。

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25536

Filed under

| Tags:

, ,

Related Posts

Most Popular

111 Comments.

⊕Leave a comment?
  1. 秦天SEO 秦天SEO Google Chrome 15.0.874.106Windows 7

    经测试,是可以用,谢谢先。不过发现系统发给管理员的邮件,有问题。

    31楼
  2. hicold hicold 360Safe ExplorerWindows 7

    期待正式版出来在使用ooo

    32楼
  3. 自来水 自来水 Firefox 7.0.1Windows Server 2003

    这代码真的很实用的!

    33楼
  4. 备案中 备案中 Internet Explorer 9.0Windows 7 x64 Edition

    :razz: 我本来就是计划向你提问的,以前看你写过类似的文章。wordpress有邮件回复的插件,找了一两个试了,但是好像只能邮件通知博主,不能通知评论者?不能邮件回复其他人的评论中的评论……(措辞不当,但是你懂我的意思的)

    34楼
  5. Sugarhosts Sugarhosts Firefox 7.0.1Windows 7

    我是使用的插件,效果还可以。

    35楼
  6. 所以呢 所以呢 Firefox 7.0.1Windows 7

    我想把邮件通知界面搞漂亮点,,可不会搞

    36楼
  7. 巢筑枝头 巢筑枝头 Internet Explorer 9.0Windows 7 x64 Edition

    :arrow: 博主你用firefox7.01会不会间歇卡住?

    37楼
  8. 38楼
  9. 小灰 小灰 Android Webkit 4.0Android 4.0.3

    忽然半夜想到这篇博文,问问zww这个要在前台回复才有效么?我忽然想起我自己在用的似乎后台回复是没有邮件的。

    39楼
    • zwwooooo zwwooooo Firefox 9.0.1Windows 7 x64 Edition

      @小灰
      这个后台也有效,但是需要 @xxx 模式,不然就乱套了,参考我写的文章《WP后台直接回复评论:支持二级无限嵌套评论、@方式、邮件通知》

  10. 小谭 小谭 Google Chrome 16.0.889.0Windows XP

    不知道为什么,我的站就是不回复

    40楼
  11. snowinmay snowinmay Firefox 6.0Windows 7

    主题挺好看的~~

    41楼
  12. wordpress加入评论邮件回复 | LabQ - pingback on 2012/03/19/ 17:21
    42楼
  13. 踏雪 踏雪 Firefox 10.0.2Windows 7 x64 Edition

    你好,我用了Configure SMTP 这个插件,配置了自己的QQ邮箱,但是评论回复怎么都是写的由我空间商的服务器代发而不是QQ邮箱发送,这样邮件就都直接进入垃圾邮箱了。

    43楼
    • zwwooooo zwwooooo Firefox 11.0Windows 7 x64 Edition

      @踏雪
      如果你用的是我这篇文章的方法,那么就要修改文章中提供的代码,有注释,自己看看修改。

  14. 周游 周游 Google Chrome 18.0.1025.152Windows 7

    将代码扔在functions.php中没有任何反应,也看不到评论条目上有回复按钮,是不是我还需要在comments.php中设置调用相关函数呀?请教了..

    44楼
    • zwwooooo zwwooooo Firefox 11.0Windows 7 x64 Edition

      @周游
      这是后台处理,前台不相干。另外你要检查你的主机支不支持mail()什么的

    • 周游 周游 Google Chrome 18.0.1025.162Windows 7

      @zwwooooo
      我的主机是有支持mail()的。我的站www.oldtime.me,请帮我看一下,评论回复还没有弄好.

    • zwwooooo zwwooooo Firefox 11.0Windows 7 x64 Edition

      @周游
      看不出来的,这是后台执行的代码,有些主机支持mail()但是新版wp好像有个bug,你试试安装这个 Configure SMTP 插件再测试一下。

    • zwwooooo zwwooooo Firefox 11.0Windows 7 x64 Edition

      @周游
      忘了说,安装 Configure SMTP 只要激活就可以,不用去设置。

  15. 手记阁 手记阁 Internet Explorer 9.0Windows 7 x64 Edition

    不知道为啥,别人发评论我能收到邮件,回复别人评论时就收不到

    45楼
  16. 小老翁 小老翁 Google Chrome 18.0.1025.168Windows 7

    :grin: 谢谢,我的也尝试成功了!

    46楼
  17. airoschou airoschou Google Chrome 18.0.1025.168Windows 7 x64 Edition

    我评论回复速度其慢啊,网上搜索了原因说是这个;
    wp_mail( $to, $subject, $message, $headers );
    果然去掉后速度快了n倍!大叔有什么好的解决办法吗

    47楼
  18. bbis bbis Google Chrome 22.0.1229.94Windows 7

    我的主题不支持这种插入方式。。
    只能通过插件来实现了。

    48楼
  19. operytu operytu Google Chrome 24.0.1312.2Windows 7

    测试 我看看

    50楼
  20. 实战Centos下Sendmail邮件发送 | Jalena Blog - pingback on 2013/01/19/ 14:01
    51楼
  21. Forece Forece Firefox 19.0Windows XP

    搜问题搜到你这了。。。我最近回复评论超慢。都不清楚哪出了问题。用的还是虚拟主机。注释掉wp_mail( $to, $subject, $message, $headers );也一样。怎么检测到底卡在哪了啊?

    52楼
  22. 阿邙 阿邙 Firefox 20.0Windows 7 x64 Edition

    貌似不行了。。

    53楼

Leave a Reply


Trackbacks and Pingbacks:

Welcome! o(∩_∩)o
X