首页 Wordpress WordPress 评论回复邮件通知

WordPress 评论回复邮件通知

WordPress 实现评论回复邮件通知,核心是两步:配置可靠的邮件发送(SMTP) + 触发通知逻辑(插件 / 代码)。下面给你最实用的两种方案(插件 / 无插件),直接可用。

一、插件实现

这里不再多说,类似插件不少,推荐插件:WP Mail SMTP(免费够用)

二、免插件实现

1. 核心代码(functions.php)
php
// 评论回应邮件通知
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="background-color:#FFF; border:1px solid #39F; color:#333;font-size:14px; width:90%; margin:0 auto; margin-top:10px; ">
	<div style="background:#39F; width:100%; height:60px; color:white; ">
	<span style="height:60px; line-height:60px; margin-left:30px; font-size:16px;">您在<a style="text-decoration:none; color:#000;font-weight:600;" href="/'%20.%20get_option('home')%20.%20'"> <strong>' . get_option("blogname") . '</strong> </a>上<strong>《' . get_the_title($comment->comment_post_ID) . '》</strong>的留言有了一个新回复</span></div>
	<div style="width:80%; margin:0 auto"><p>您在<strong>《' . get_the_title($comment->comment_post_ID) . '》</strong>的留言是:</p>
		<p style="background-color: #EEE;border: 1px solid #ccc;padding: 20px;margin: 15px 0;">' . nl2br(get_comment($parent_id)->comment_content) . '</p>
		<p>' . trim($comment->comment_author) . ' 给您的新回复是:</p><p style="background-color: #EEE;border: 1px solid #ccc;padding: 20px;margin: 15px 0;">' . nl2br($comment->comment_content) . '</p>
		<p>您可以点击“<a href="/'%20.%20htmlspecialchars(get_comment_link($parent_id))%20.%20'">这里</a>”查看评论
		</p>如果你不能点击上面的链接可以吧下面的链接复制到地址栏中访问
		<p style="background-color: #EEE;border: 1px solid #ccc;padding: 20px;margin: 15px 0;"><a href="/'%20.%20htmlspecialchars(get_comment_link($parent_id))%20.%20'">' . htmlspecialchars(get_comment_link($parent_id)) . '</a></p>
		<p style="text-align:center;font-weight:600;font-size:16px;">欢迎再次光临 <a style="text-decoration:none; color:#d14836" href="/'%20.%20get_option('home')%20.%20'">' . get_option('blogname') . '</a></p>
		<p style="text-align:center;color:red">注意:此邮件由系统发出,请勿回复!</p>
	</div>
</div>
	';
    $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
    $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
    wp_mail( $to, $subject, $message, $headers );
    //echo 'mail to ', $to, '
 ' , $subject, $message; // for testing
  }
}
add_action('comment_post', 'comment_mail_notify');
2、代码版优化:仅用户勾选时发信
php
<!-- 评论回复通知勾选框 -->
<p class="comment-form-mail-notify">
    <label for="mail_notify">
        <input type="checkbox" name="mail_notify" id="mail_notify" value="1" checked>
        接收他人回复我的评论的邮件通知
    </label>
</p>

三、常见问题

1、邮件进垃圾箱:必须用 SMTP 发信,不要用默认 mail() 函数。 2、收不到邮件:检查 SMTP 配置、邮箱授权码、垃圾邮件箱。 3、代码不生效:确保 wp_mail() 正常、评论状态为 approve、父评论存在。 4、主题更新覆盖代码:建议用子主题或自定义插件存放代码。

相关推荐

发表回复

邮箱地址不会被公开。