Files
argon-theme/email-templates/comment-notify.php
nanhaoluo c0fa3d2352 fix: 优化评论发送速度和邮件通知系统
- AI 垃圾评论检测改为异步执行(延迟 2 秒),避免阻塞评论发送
- 站长评论通知改用邮件模板系统发送
- 站长评论通知邮件包含 AI 审核信息(识别结果、理由、识别码)
- 禁用 WordPress 默认的评论通知邮件
- 邮件模板系统支持 Mustache 条件语法({{#variable}}...{{/variable}})
- 评论发送、AI 审核、邮件通知全部异步并行处理
2026-01-22 13:14:23 +08:00

66 lines
2.2 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Argon 评论通知邮件
*
* 当博客收到新评论时发送给管理员的通知邮件
*/
if (!defined('ABSPATH')) {
exit;
}
/**
* 发送评论通知邮件给管理员
*
* @param WP_Comment $comment 评论对象
* @return bool 发送是否成功
*/
function argon_send_comment_notify_email($comment) {
// 获取文章信息
$post = get_post($comment->comment_post_ID);
if (!$post) {
return false;
}
// 获取管理员邮箱
$admin_email = get_option('admin_email');
if (empty($admin_email)) {
return false;
}
// 不给自己发通知
$comment_author_email = strtolower($comment->comment_author_email);
if ($comment_author_email === strtolower($admin_email)) {
return false;
}
// 准备模板变量
$vars = array(
'post_title' => $post->post_title,
'post_url' => get_permalink($post->ID),
'commenter_name' => $comment->comment_author,
'commenter_email' => $comment->comment_author_email,
'comment_content' => $comment->comment_content,
'comment_url' => get_comment_link($comment),
'comment_date' => get_comment_date(get_option('date_format') . ' ' . get_option('time_format'), $comment),
);
// 检查是否有 AI 审核信息
$spam_detection_result = get_comment_meta($comment->comment_ID, '_argon_spam_detection_result', true);
if (!empty($spam_detection_result) && is_array($spam_detection_result)) {
$vars['ai_spam_check'] = true;
$vars['ai_is_spam'] = $spam_detection_result['is_spam'];
$vars['ai_spam_reason'] = isset($spam_detection_result['reason']) ? $spam_detection_result['reason'] : '';
$vars['ai_spam_action'] = isset($spam_detection_result['action']) ? $spam_detection_result['action'] : '';
// 生成内容识别码(评论 ID + 时间戳的 MD5
$detection_time = get_comment_meta($comment->comment_ID, '_argon_spam_detection_time', true);
$vars['ai_detection_code'] = strtoupper(substr(md5($comment->comment_ID . '-' . $detection_time), 0, 8));
} else {
$vars['ai_spam_check'] = false;
}
// 发送邮件
return argon_send_email($admin_email, 'comment_notify', $vars);
}