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这个插件,它可以在评论审核通过后发送邮件给对方。
About The Author
Need more than content? Move into the product flow.
If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.
