给WordPress添加评论回复邮件提醒功能,目前已成为WordPress博客的标配,不仅可以大大提高用户体验,还可以增加访客的回头率。
偶然发现,这是一项很危险的功能,目前网上流行的代码版本很容易被一些别有用心的人利用:
我可以给你博客的所有评论都回复一遍,不仅在你的博客留下了垃圾评论,垃圾内容也通过评论回复提醒邮件顺带发出去了。
无需花费心思去获取评论者的邮件地址,也不用担心评论是否还在等待审核,垃圾广告内容顺利发出。
很多博客都宣扬不会泄漏评论者的email,但是如果这个bug被人利用,你的博客倒成了垃圾邮件的发送者,这岂不是很搞笑?
解决办法
1、进入WordPress后台 – 设置 – 讨论,勾选”评论必须经人工批准”,这样所有评论必须经过管理员审核才能显示,虽然有点麻烦,但是我觉得这是博主应该负起的一项责任。
2、接着我们需要将之前的评论回复邮件提醒的代码做些修改。
对于管理员和编辑的评论回复,可以直接给评论者发送提醒邮件;对于普通访客发表的评论,先让它在待审评论中呆着,等博主审核后,再给评论者发送提醒邮件。下面是一个评论回复邮件提醒的代码范例,使用的是所有评论回复都发送邮件通知的版本,如果你需要其他功能,请参考网上的代码进行修改:
效果图
使用方法
将下面代码添加到functions.php文件里,如果你functions.php文件里已经有了类似的代码需要删除替换掉,另外一些主题不在functions.php文件里需要自己删除其他文件里的邮件回复代码,然后在将贝贝的邮件发送代码添加到functions.php里去。
- /**
- * WordPress评论回复邮件提醒防垃圾评论版
- * 作者:韦贝贝
- * 博客:https://www.hibbba.com
- *2017年1月31日
- */
- //评论邮件回复开始
- 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: #F1F1F1;width: 100%;padding: 50px 0;”>
- <div style=“background: #FFF;width: 750px;margin: 0 auto;”>
- <div style=“padding: 10px 60px;background: #FF5E52;color: #FFF;font-size: 24px; font-weight: bold;”><a href=“‘ . get_option(‘home’) . ‘” style=“text-decoration: none;color: #FFF;” target=“_blank”>’ . get_option(‘blogname’) . ‘</a></div>
- <h1 style=“text-align: center;font-size: 26px;line-height: 50px;margin: 30px 60px;font-weight: bold;font-family: 宋体,微软雅黑,serif;”>
- 您在 [‘ . get_option(‘blogname’) . ‘] 的留言有了新回复
- </h1>
- <div style=“border-bottom: 1px solid #333;height: 0px;margin: 0 60px;”></div>
- <div style=“margin: 30px 60px;color: #363636;”>
- <p style=“font-size: 16px;font-weight: bold;line-height: 30px;”>’ . $parent_comment->comment_author . ‘,您好!</p>
- <div style=“font-size: 16px;”>
- <p><strong>您曾在 [‘ . get_option(“blogname”) . ‘] 的文章 《’ . get_the_title($comment->comment_post_ID) . ‘》 上发表评论:</strong></p>
- <blockquote style=“border-left: 4px solid #ddd; padding: 5px 10px; line-height: 22px;”>’ . nl2br($parent_comment->comment_content) . ‘</blockquote>
- </div>
- <div style=“font-size: 16px;”>
- <p><strong>’ . trim($comment->comment_author) . ‘ 给您的回复如下:</strong></p>
- <blockquote style=“border-left: 4px solid #ddd; padding: 5px 10px; line-height: 22px;”>’ . nl2br($comment->comment_content) . ‘</blockquote>
- </div>
- <p style=“font-size: 16px;line-height: 30px;”>
- 你可以点击此链接 <a href=“‘ . htmlspecialchars(get_comment_link($comment->comment_parent)) . ‘” style=“text-decoration: none;color: #50A5E6;” target=“_blank”>查看完整回复内容</a> | 欢迎再次来访 <a href=“‘ . get_option(‘home’) . ‘” style=“text-decoration: none;color: #50A5E6;” target=“_blank”>’ . get_option(‘blogname’) . ‘</a>
- </p>
- <p style=“color: #999;”>(此邮件由系统自动发出,请勿回复!)</p>
- </div>
- <div style=“border-bottom: 1px solid #dfdfdf;height: 0px;margin: 0 60px;”></div>
- <div style=“text-align: right;padding: 30px 60px;color: #999;”>
- <p>Powered by ‘ . get_option(‘blogname’) . ‘</p>
- </div>
- </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);
- //评论邮件回复结束
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系贝贝进行处理。本站默认解压密码:www.hibbba.com



评论(0)