dmeng主题评论回复发送邮件功能修复

文章目录

# 背景

dmeng主题虽然集成了smtp发送邮件功能,评论邮件回复也分为给文章作者、上级评论、管理员的通知,但是发现这个功能一直失效,忘记密码和更改邮箱确认的邮件都发送正常。

参考《免插件仅代码实现 WordPress 评论回复邮件提醒》进行了一定了修复,原文代码评论提交后就会触发,不管有没有通过管理员审核,于是改成了评论通过审核后触发邮件发送。

# 删除原始代码

在主题的 funtions.php 文件中删除以下代码,大概是 64 到 158 行之间

//~ 评论回复邮件通知
function dmeng_comment_mail_notify($comment_id, $comment_object){
... ...
add_action('wp_insert_comment', 'dmeng_comment_mail_notify' , 99, 2 );
add_action('dmeng_comment_unapproved_to_approved', 'dmeng_comment_mail_notify' , 99, 2 );
//~ 取消默认的评论邮件通知
add_filter('comment_notification_recipients', '__return_false', 10, 1);

# 添加新的

在主题的 funtions.php 文件中添加以下代码

//评论通过审核后回复邮件
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-right:#666666 1px solid;border-radius:8px;color:#111;font-size:12px;width:95%;border-bottom:#666666 1px solid;font-family:微软雅黑,arial;margin:10px auto 0px;border-top:#666666 1px solid;border-left:#666666 1px solid"><div class="adM">
    </div><div style="width:100%;background:#666666;min-height:60px;color:white;border-radius:6px 6px 0 0"><span style="line-height:60px;min-height:60px;margin-left:30px;font-size:12px">您在<a style="color:#00bbff;font-weight:600;text-decoration:none" href="' . get_option('home') . '" target="_blank">' . get_option('blogname') . '</a> 上的留言有回复啦!</span> </div>
    <div style="margin:0px auto;width:90%">
    <p><span style="font-weight:bold;">' . trim(get_comment($parent_id)->comment_author) . '</span>, 您好!</p>
    <p>您于' . trim(get_comment($parent_id)->comment_date) . ' 在文章《' . get_the_title($comment->comment_post_ID) . '》上发表评论: </p>
    <p style="border-bottom:#ddd 1px solid;border-left:#ddd 1px solid;padding-bottom:20px;background-color:#eee;margin:15px 0px;padding-left:20px;padding-right:20px;border-top:#ddd 1px solid;border-right:#ddd 1px solid;padding-top:20px">' . nl2br(get_comment($parent_id)->comment_content) . '</p>
    <p><span style="font-weight:bold;">' . trim($comment->comment_author) . '</span> 于' . trim($comment->comment_date) . ' 给您的回复如下: </p>
    <p style="border-bottom:#ddd 1px solid;border-left:#ddd 1px solid;padding-bottom:20px;background-color:#eee;margin:15px 0px;padding-left:20px;padding-right:20px;border-top:#ddd 1px solid;border-right:#ddd 1px solid;padding-top:20px">' . nl2br($comment->comment_content) . '</p>
    <p>您可以点击 <a style="color:#00bbff;text-decoration:none" href="' . htmlspecialchars(get_comment_link($parent_id)) . '" target="_blank">查看回复的完整内容</a></p>
    <p>感谢你对 <a style="color:#00bbff;text-decoration:none" href="' . get_option('home') . '" target="_blank">' . get_option('blogname') . '</a> 的关注,如您有任何疑问,欢迎在博客留言,我会一一解答</p><p style="color:#A8979A;">(此邮件由系统自动发出,请勿回复。)</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, '<br/> ' , $subject, $message; // for testing
    }
}
add_action('wp_insert_comment', 'comment_mail_notify' , 99, 2 );
add_action('dmeng_comment_unapproved_to_approved', 'comment_mail_notify' , 99, 2 );
原文链接:,转发请注明来源!

发表评论

  • 4 Responses to “dmeng主题评论回复发送邮件功能修复”
    • 懿古今

      很久没有关注过本站的评论回复邮件是否正常了,能够通过回复评论的邮件来访的人还是挺少的

      回复
      • 恩恩 主要还是想把评论的回复传达给评论者 不然感觉怪怪的

        传奇回复私信
    • 邮件测试

      专业测试

      回复