WordPress评论邮件通知是一个非常有用的功能,可以增加与网友的互动。
如果你在本文中问我:“我按照教程操作了,为什么评论没有邮件通知呢?”,你是否愿意每天刷新文章来看我是否回复你,或者是否愿意收到一封邮件告诉你,你的评论有人回复了呢。
代码实现方法
有两种方法可以实现在WordPress博客中评论后给评论者发送邮件的功能,一种是通过增加代码来实现,另一种是通过插件来实现。
如果使用代码功能,基本上都是用的下面这个代码,或者稍微修改过的版本
/* comment_mail_notify v1.0 by willin kan. (所有回复都发邮件) */
登陆博客后台,点击“外观”选项卡下的“编辑”选项进入主题编辑界面,在functions.php文件中的之间添加以下函数即可:
1、所有人都发邮件
/* comment_mail_notify v1.0 by willin kan. (所有回复都发邮件) */ function comment_mail_notify($comment_id) { $comment = get_comment($comment_id); $parent_id = $comment->comment_parent ? $comment->comment_parent : ; $spam_confirmed = $comment->comment_approved; if (($parent_id != ) && ($spam_confirmed != spam)) { $wp_email = no-reply@ . preg_replace(#^www.#, , strtolower($_SERVER[SERVER_NAME])); //e-mail 发出点, no-reply 可改为可用的 e-mail. $to = trim(get_comment($parent_id)->comment_author_email); $subject = 您在 [ . get_option("blogname") . ] 的留言有了回复; $message = <div style=" 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>您可以点击 查看回复完整內容</p> <p>欢迎再度光临 . get_option(blogname) . </p> <p>(此邮件由系统自动发送,请勿回复.)</p> </div>; $from = "From: "" . get_option(blogname) . "" <$wp_email>"; $headers = "$fromnContent-Type: text/html; charset=" . get_option(blog_charset) . "n"; wp_mail( $to, $subject, $message, $headers ); //echo mail to , $to, <br/> , $subject, $message; // for testing } } add_action(comment_post, comment_mail_notify); // -- END ----------------------------------------
2、让访客自己选择是否邮件通知
在functions.php文件中的之间添加以下函数,该函数将会在评论框底部生成要不要收回复通知的选项
/* 开始*/ function comment_mail_notify($comment_id) { $admin_notify = 1; // admin 要不要收回复通知 ( 1=要 ; 0=不要 ) $admin_email = get_bloginfo (admin_email); // $admin_email 可改为你指定的 e-mail. $comment = get_comment($comment_id); $comment_author_email = trim($comment->comment_author_email); $parent_id = $comment->comment_parent ? $comment->comment_parent : ; global $wpdb; if ($wpdb->query("Describe {$wpdb->comments} comment_mail_notify") == ) $wpdb->query("ALTER TABLE {$wpdb->comments} ADD COLUMN comment_mail_notify TINYINT NOT NULL DEFAULT 0;"); if (($comment_author_email != $admin_email && isset($_POST[comment_mail_notify])) || ($comment_author_email == $admin_email && $admin_notify == 1)) $wpdb->query("UPDATE {$wpdb->comments} SET comment_mail_notify=1 WHERE comment_ID=$comment_id"); $notify = $parent_id ? get_comment($parent_id)->comment_mail_notify : 0; $spam_confirmed = $comment->comment_approved; if ($parent_id != && $spam_confirmed != spam && $notify == 1) { $wp_email = no-reply@ . preg_replace(#^www.#, , strtolower($_SERVER[SERVER_NAME])); // e-mail 发出点, no-reply 可改为可用的 e-mail. $to = trim(get_comment($parent_id)->comment_author_email); $subject = 您在 [ . get_option("blogname") . ] 的留言有了回复; $message = <div style=" 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>您可以点击查看回复的完整內容</p> <p>还要再度光临 . get_option(blogname) . </p> <p>(此邮件由系统自动发送,请勿回复.)</p> </div>; $from = "From: "" . get_option(blogname) . "" <$wp_email>"; $headers = "$fromnContent-Type: text/html; charset=" . get_option(blog_charset) . "n"; wp_mail( $to, $subject, $message, $headers ); //echo mail to , $to, <br/> , $subject, $message; // for testing } } add_action(comment_post, comment_mail_notify); /* 自动加勾选栏 */ function add_checkbox() { echo <input type="checkbox" name="comment_mail_notify" id="comment_mail_notify" value="comment_mail_notify" checked="checked" style="margin-left:20px;" /><span for="comment_mail_notify">有人回复时邮件通知我</span>; } add_action(comment_form, add_checkbox);
3、让博客管理员决定什么情况下发邮件
在functions.php文件中的之间添加以下函数:
/* comment_mail_notify v1.0 by willin kan. (无勾选栏) */ function comment_mail_notify($comment_id) { $admin_email = get_bloginfo (admin_email); // $admin_email 可改为你指定的 e-mail. $comment = get_comment($comment_id); $comment_author_email = trim($comment->comment_author_email); $parent_id = $comment->comment_parent ? $comment->comment_parent : ; $to = $parent_id ? trim(get_comment($parent_id)->comment_author_email) : ; $spam_confirmed = $comment->comment_approved; if (($parent_id != ) && ($spam_confirmed != spam) && ($to != $admin_email) && ($comment_author_email == $admin_email)) { /* 上面的判断式,决定发出邮件的必要条件: ($parent_id != ) && ($spam_confirmed != spam): 回复的, 而且不是 spam 才可发, 必需!! ($to != $admin_email) : 不发给 admin. ($comment_author_email == $admin_email) : 只有 admin 的回复才可发. 可视个人需修改上面的条件. */ $wp_email = no-reply@ . preg_replace(#^www.#, , strtolower($_SERVER[SERVER_NAME])); // e-mail 发出点, no-reply 可改为可用的 e-mail. $subject = 您在 [ . get_option("blogname") . ] 的留言有了回复; $message = <div style=" 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>您可以点击 查看回复的完整內容</p> <p>还要再度光临 . get_option(blogname) . </p> <p>(此邮件由系统自动发送,请勿回复.)</p> </div>; $from = "From: "" . get_option(blogname) . "" <$wp_email>"; $headers = "$fromnContent-Type: text/html; charset=" . get_option(blog_charset) . "n"; wp_mail( $to, $subject, $message, $headers ); //echo mail to , $to, <br/> , $subject, $message; // for testing } } add_action(comment_post, comment_mail_notify); // -- END ----------------------------------------
如果你对代码感兴趣,可以访问申杰博客了解更多详细信息。
但是这个代码在某些主题中可能不起作用,所以我推荐使用Wenprise Better Emails插件来解决。
插件版方法(推荐)
Wenprise Better Emails可以美化WordPress评论审核通知邮件,评论通知文章作者的邮件,增加回复评论时,发送邮件通知给评论作者的功能。
我推荐使用Wenprise Better Emails插件的原因有以下几点:
- 能实现评论时邮件回复通知,安装即用,适合新手;
- 国人制作的插件,符合使用习惯,界面也漂亮;
- 带有取消订阅功能,能减少邮件被判定为垃圾邮件的几率。
插件安装地址:https://wordpress.org/plugins/wenprise-better-emails/
代码和插件都不能用?
使用评论邮件通知功能有一个前提条件,就是你的服务器可以发送邮件。
然而,大多数主机都不支持直接发送邮件,因此我们需要使用第三方插件来实现主机发送邮件,也就是使用SMTP的方式来发送邮件,你可以参考下面的文章。
我使用过的WordPress邮件插件推荐
另外,我还使用过Comment Approved这个插件,它可以在评论审核通过后发送邮件给对方。