前一篇文章我讲了使用 WP-Mail-SMTP 插件后,管理员回复读者的评论,读者收不到邮件提醒的问题。主要是因为该插件为了防止垃圾邮件产生,默认只给管理员发邮件,不能给非管理员发邮件。如果我们解禁了此限制,那么问题又来了:谁都可以给你文章评论下的评论者发邮件啊,一些无聊的人就会乱发垃圾邮件骚扰你文章的正常评论者,本着对读者负责的态度,这种事情是不允许发生的的。
所以需要进一步设置:新读者回复给已评论的人后,只有通过管理员审核,才能向已评论者发邮件回复通知。这样就过滤了垃圾邮件对已评论者的骚扰。
露兜博客介绍了其修改的代码,我觉得很实用,就借花献佛了。顺便改了一下模板样式。如果你是用知更鸟的 Begin 主题,可以直接把主题目录下的 notify.php 文件同名替换(有些地方注意修改成自己的博客地址)。以下是经过润色的代码和一些解释:
- / **
- * WordPress评论回复邮件提醒防垃圾评论版
- * 根据原作者 露兜 https://www.ludou.org/ 的代码略有修改
- * /
- 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 = '
- <table cellpadding="0" cellspacing="0" style="font-family: 微软雅黑,verdana, arial; margin: 0 auto; width: 100%;">
- <tbody>
- <tr>
- <td style="background: #08c; color: #fff; font-family: 微软雅黑,verdana, arial; font-size:15px;line-height: 35px;"><strong> 您在博客 [' . get_option("blogname") . '] 的留言有了新的回复:</strong></td>
- </tr>
- <tr>
- <td style="border: solid 1px #ccc; font-size: 13px; line-height: 180%; padding: 20px;"><span style="color: rgb(186, 76, 50); font-family:微软雅黑, verdana, arial; line-height: 23.3999996185303px;"> ' . $parent_comment->comment_author . '</span>, 您好!
- <p>您曾在<span style="color:#ba4c32;">《' . get_the_title($comment->comment_post_ID) . '》</span>一文中的留言:</p>
- <blockquote style="width: 94%;color: #8b8b8b;margin: 0 auto;padding: 10px;clear: both;border: 1px solid #ebebeb;">
- <p>' . $parent_comment->comment_content . '</p>
- </blockquote>
- <p><span style="color:#ba4c32;">' . $comment->comment_author . ' </span> 给你的回复:</p>
- <blockquote style="width: 94%;color: #8b8b8b;margin: 0 auto;padding: 10px;clear: both;border: 1px solid #ebebeb;">
- <p>' . $comment->comment_content . ' </p>
- </blockquote>
- <p style="padding: 5px;">您可以 <a href="' . htmlspecialchars(get_comment_link($comment->comment_parent)) . '">点此查看回复完整內容</a></p>
- <p style="padding: 5px;">欢迎您再度光临 <a href="'.home_url().'">' . get_option('blogname') . '</a>的博客。</p>
- </td>
- </tr>
- <tr>
- <td style="color: rgb(255, 255, 255); font-size: 12px; line-height: 21.6000003814697px; padding: 10px; background: rgb(51, 51, 51);">请注意:此邮件由 <a href="https://www.timezls.com" target="_blank" title="时光在路上">时光在路上</a> 的博客自动发送,请勿直接回复。<br />如果此邮件不是您请求的,请忽略并删除!</td>
- </tr>
- </tbody>
- </table> ';
- $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);
本文禁止住转载。任何形式转载请联系作者(时光在路上 www.timezls.com)。时光在路上保留所有权利