西部数码主机 | 阿里云主机| 虚拟主机 | 服务器 | 返回乐道官网
当前位置: 主页 > php教程 > wordpress教程 >

WordPress评论回复邮件通知优化

时间:2016-04-01 10:10来源:未知 作者:好模板 点击:
WordPress 自带的这个评论系统,可能邮件通知是它最大的特色了。虽然对外来说 WordPress 不会公开评论者的邮件地址,但是你绝不会想到会有人利用评论通知去扩散垃圾邮件吧! 后台 设

 WordPress 自带的这个评论系统,可能邮件通知是它最大的特色了。虽然对外来说 WordPress 不会公开评论者的邮件地址,但是你绝不会想到会有人利用评论通知去扩散垃圾邮件吧!

后台 – 设置 – 讨论,勾选”评论必须经人工批准”,这样所有评论必须经过管理员审核才能显示。

我只需要在任意的 WordPress 网站回复评论就可以啦!所以,我们有必要制止这种行为,最简单的方法就是开启评论审核之后才能通过而不是直接就通过。另外,我们还需要定制一下 WordPress 自带的邮件通知函数,让它更加智能——比如其他人评论别人的评论的时候,只有审核通过了才会发出邮件通知。

同样的,我还是推荐你在子主题里进行修改,这样你的主题就可以随意升级而避免自定义的内容被清除掉了:)

在你当前主题的 functions . php 里追加如下内容:


 
function ludou_comment_mail_notify($comment_id, $comment_status) {
  // 评论必须经过审核才会发送通知邮件
  if ($comment_status !== 'approve' && $comment_status !== 1)
    return;
  
  $comment = get_comment($comment_id);
 
  if ($comment->comment_parent != '0') {
    $parent_comment = get_comment($comment->comment_parent);
 
    // 邮件接收者email      
    $to = trim($parent_comment->comment_author_email);
    
    // 邮件标题
    $subject = '您在[' . get_option("blogname") . ']的留言有了新的回复';
 
    // 邮件内容,自行修改,支持HTML
    $message = '
      <p>Hi, ' . $parent_comment->comment_author . '</p>
      <p>您之前在《' . get_the_title($comment->comment_post_ID) . '》的留言:<br />'
      . $parent_comment->comment_content . '</p>
      <p>' . $comment->comment_author . ' 给您回复:<br />'
      . $comment->comment_content . '<br /><br /></p>
      <p>您可以 <a href="' . htmlspecialchars(get_comment_link($comment->comment_parent)) . '">点此查看回复完整內容</a></p>
      <p>欢迎再度光临 <a href="'.home_url().'">' . get_option('blogname') . '</a></p>
      <p>(此邮件由系统自动发送,请勿回复)</p>';
 
    $message_headers = "Content-Type: text/html; charset=\"".get_option('blog_charset')."\"\n";
    
    // 不用给不填email的评论者和管理员发提醒邮件
    if($to != '' && $to != get_bloginfo('admin_email'))
      @wp_mail($to, $subject, $message, $message_headers);
  }
}
 
 
// 编辑和管理员的回复直接发送提醒邮件,因为编辑和管理员的评论不需要审核
add_action('comment_post', 'ludou_comment_mail_notify', 20, 2);
 
// 普通访客发表的评论,等博主审核后再发送提醒邮件
add_action('wp_set_comment_status', 'ludou_comment_mail_notify', 20, 2);

优化

好吧,既然我们已经改了默认的邮件通知函数,那为何不顺便改的更彻底一些,让它看起来更加赏心悦目一点呢?总之,我在网上随便找到了一段美化代码,当然,这个代码比较旧无法正常运行,我参照着露兜博客的代码进行了微小的修改,你可以拿去试试看:)


function logcg_comment_mail_notify($comment_id, $comment_status) {
  // 评论必须经过审核才会发送通知邮件
  if ($comment_status !== 'approve' && $comment_status !== 1)
    return;
 
  $comment = get_comment($comment_id);
 
  if ($comment->comment_parent != '0') {
    $parent_comment = get_comment($comment->comment_parent);
 
    // 邮件接收者email      
    $to = trim($parent_comment->comment_author_email);
 
    // 邮件标题
    $subject = '您在[' . get_option("blogname") . ']的留言有了新的回复';
 
    // 邮件内容,自行修改,支持HTML
    $message = '
      <div style="background-color:#fff; border:1px solid #666666; color:#111;
-moz-border-radius:8px; -webkit-border-radius:8px; -khtml-border-radius:8px;
border-radius:8px; font-size:12px; width:702px; margin:0 auto; margin-top:10px;
font-family:苹方,微软雅黑, Arial;">  
<div style="background:#666666; width:100%; height:60px; color:white;
-moz-border-radius:6px 6px 0 0; -webkit-border-radius:6px 6px 0 0;
-khtml-border-radius:6px 6px 0 0; border-radius:6px 6px 0 0; ">  
<span style="height:60px; line-height:60px; margin-left:30px; font-size:12px;">  
您在 <a style="text-decoration:none; color:#00bbff;font-weight:600;"  
href="' . get_option('home') . '">' . get_option('blogname') . '  
</a> 的留言有了新回复!</span></div>  
<div style="width:90%; margin:0 auto">  
<p>' . $parent_comment->comment_author . ',您好!</p>  
<p>您曾在 [' . get_option("blogname") . '] 的文章  
《' . get_the_title($comment->comment_post_ID) . '》 上发表评论:  
<p style="background-color: #EEE;border: 1px solid #DDD;
padding: 20px;margin: 15px 0;">' . nl2br($parent_comment->comment_content) . '</p>  
<p>' . trim($comment->comment_author) . ' 给您的回复如下:  
<p style="background-color: #EEE;border: 1px solid #DDD;padding: 20px;
margin: 15px 0;">' . nl2br($comment->comment_content) . '</p>  
<p>您也可移步 <a style="text-decoration:none; color:#00bbff"  
href="' . htmlspecialchars(get_comment_link($comment->comment_parent)) . '">落格博客</a> 以查看回复的完整內容。</p>  
<p>欢迎再次光临 <a style="text-decoration:none; color:#00bbff"  
href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>  
<p>(此邮件由系统自动发出, 请勿回复。)</p>  
</div>  
</div>';  
 
    $message_headers = "Content-Type: text/html; charset=\"".get_option('blog_charset')."\"\n";
 
    // 不用给不填email的评论者和管理员发提醒邮件
    if($to != '' && $to != get_bloginfo('admin_email'))
      @wp_mail($to, $subject, $message, $message_headers);
  }
}
 
 
// 编辑和管理员的回复直接发送提醒邮件,因为编辑和管理员的评论不需要审核
add_action('comment_post', 'logcg_comment_mail_notify', 20, 2);
 
// 普通访客发表的评论,等博主审核后再发送提醒邮件
add_action('wp_set_comment_status', 'logcg_comment_mail_notify', 20, 2);

效果

最后,我们来看看效果:

美化后的评论回复邮件通知
(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
热点内容