Old

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

这是自用的评论回复邮件通知代码,源码来自 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 );
     }
 }

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

zww
or
oooo

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

118 comments

  1. 秦天SEO 秦天SEO

    正在寻找类似的文章,自己的邮件回复,链接是文本形式的,想实现超链接形式,关注中!

    沙发
  2. A.shun A.shun

    板凳
    等下篇

    板凳
  3. 杨小凌 杨小凌

    先评论了再说

    地板
  4. ......
  5. snowinmay snowinmay

    主题挺好看的~~

    41楼
  6. wordpress加入评论邮件回复 | LabQ - pingback on 2012/03/19/ 17:21
    42楼
  7. 踏雪 踏雪

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

    43楼
    • zwwooooo zwwooooo

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

  8. 周游 周游

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

    44楼
    • zwwooooo zwwooooo

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

    • 周游 周游

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

    • zwwooooo zwwooooo

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

    • zwwooooo zwwooooo

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

  9. 手记阁 手记阁

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

    45楼
  10. 小老翁 小老翁

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

    46楼
  11. airoschou airoschou

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

    47楼
  12. bbis bbis

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

    48楼
  13. operytu operytu

    测试 我看看

    50楼
  14. 实战Centos下Sendmail邮件发送 | Jalena Blog - pingback on 2013/01/19/ 14:01
    51楼
  15. Forece Forece

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

    52楼
  16. 阿邙 阿邙

    貌似不行了。。

    53楼
  17. woween woween

    好文,学习啦,有发送图片效果吗?

    54楼
  18. xuexi xuexi

    B回复给A,B是游客;评论需要审核。

    上面代码出现的结果是,管理都没有审核B的评论。直接给A发邮件了。 博主能修正下这个问题吗?

    只能通过审核的评论才会邮件通知

    55楼
  19. xuexi xuexi

    博主 不能解答下吗?

    56楼
    • zwwooooo zwwooooo

      @xuexi
      这个没折腾过,要给 SimPaled_send_email 函数前加个判断,最近忙,没时间去尝试。

    • 大肥羊 大肥羊

      @xuexi
      试试将 if ($spam_confirmed != 'spam' && $to != $admin_email && $to != $author_email) 改成 if ($spam_confirmed == '1' && $to != $admin_email && $to != $author_email)

      然后在
      add_action('comment_post', 'comment_mail_notify');
      下面添加一句add_action('comment_unapproved_to_approved', 'comment_mail_notify');

  20. hello hello

    我就想试试你的评论框好用不!

    57楼

Leave a Reply