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 ); } } 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); $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])); $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 ); } } 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); $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])); $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 ); } } add_action(comment_post, comment_mail_notify); // -- END ----------------------------------------如果你对这些代码感兴趣,欢迎访问申杰博客获取更多详细信息。
需要注意的是,这段代码在某些主题中可能会失效,因此我建议使用Wenprise Better Emails插件来解决这个问题。
插件方法(推荐)

Wenprise Better Emails插件能美化WordPress的评论审核通知邮件,并具备在评论回复时发送邮件通知评论者的功能。
我推荐使用Wenprise Better Emails插件的理由有:
- 能够轻松实现评论时的邮件回复通知,适合新手用户;
- 插件由国内开发,符合用户使用习惯,界面友好;
- 带有取消订阅功能,能降低邮件被标记为垃圾邮件的可能性。
插件安装地址:Wenprise Better Emails
代码和插件都无法使用?
要使用评论邮件通知功能,前提是你的服务器必须能够发送邮件。
然而,大多数主机不支持直接发送邮件,因此我们需要依赖第三方插件通过SMTP的方式发送邮件,相关的内容可以参考以下文章。
我推荐使用的WordPress邮件插件还有Comment Approved,它可以在评论审核通过后向评论者发送邮件通知。
