WordPress-Argon主题评论回复提醒邮件设置与优化
本文最后更新于224 天前,其中的信息可能已经过时,如有错误请发送邮件到takumijie@qq.com

1. 效果展示

因为不可能一直关注博客,所以评论一直不能及时回复
或是得到回复后不能知道自己的评论被回复了
这个功能的开启便可以摆脱这些困扰

image-20250326192343451

这个功能是argon主题自带的,但是自带的邮件排版效果我觉得不是太满意
所以我对这个邮件的排版等进行了一些简单的修改,现在分享出

2.修改教程

  1. 插件安装:在开始修改前需要先安装一个插件WP Mail SMTP 这个插件支持多种流行的邮件服务提供商,如 Gmail、SendGrid、Mailgun、Amazon SES 等,只要支持SMTP服务就可以通过配置完成邮箱的接入。通过这些服务发送邮件,能确保更高的送达率和更稳定的邮件传输。
    插件地址WP Mail SMTP

  2. 申请SMTP服务:我们来到我们的qq邮箱主页(电脑端),然后点击左上角账号下的设置找到账号那一栏并找到这个下图的设置,开启这个服务,根据引导可以获取到授权码这个授权码就是我们接下来要使用的密码。
    image-20250326201603055

  3. 插件配置(qq邮箱):点开左侧栏下方的wp mail smtp插件的设置,首先选择其他SMTP,然后填入SMTP主机smtp.qq.com加密可以查看文档选择合适的加密,SMTP端口填入587认证启用,下面SMTP用户名填写我们的qq邮箱地址,SMTP密码将上一步获取到的授权码填入即可完成配置,其他配置项都有详细描述,可以根据自己的需求进行配置。

    image-20250326200707582

  4. 开启评论回复邮箱提醒功能:在完成上述设置之后我们就可以开启我们的邮箱提醒功能了,同时已经支持了如有用户发送评论,提醒便会发送到我们管理员邮箱,这部分自己看的已经很详细而且不需要什么排版,主要修改的还是评论回复提醒的邮件模板。
    开启功能:打开我们的argon主题选项找到评论设置,并在其中找到如图的设置,选择允许,并勾上默认勾选邮件通知。
    image-20250326203245950

  5. 主题代码修改:此时功能已经可用,如果没有排版要求的话可以直接选择跳过下面的步骤了。

    1. 找到网站根目录下/wp-content/themes/argon 这是argon主题的所在目录

    2. 找到function.php文件打开并编辑

    3. 找到function comment_mail_notify($comment)这个函数并修改(大约1400行左右)

      //建议不要直接修改原有的函数
      //使用注释将原有函数注释掉
      //添加修改后的函数
      //自定义邮件内容
      function comment_mail_notify($comment){
          // 检查是否允许评论邮件通知
          if (get_option("argon_comment_allow_mailnotice") != "true"){
              return;
          }
          // 检查评论是否为空
          if ($comment == null){
              return;
          }
          // 获取评论ID
          $id = $comment->comment_ID;
          // 获取评论所属文章ID
          $commentPostID = $comment->comment_post_ID;
          // 获取评论作者
          $commentAuthor = $comment->comment_author;
          // 获取父评论ID
          $parentID = $comment->comment_parent;
          // 如果没有父评论,直接返回
          if ($parentID == 0){
              return;
          }
          // 获取父评论对象
          $parentComment = get_comment($parentID);
          // 获取父评论作者邮箱
          $parentEmail =  $parentComment->comment_author_email;
          // 获取父评论作者
          $parentName = $parentComment->comment_author;
          // 构造收件人邮箱格式
          $emailTo = "$parentName <$parentEmail>";
          // 检查父评论是否允许邮件通知
          if (get_comment_meta($parentID, "enable_mailnotice", true) == "true"){
              // 检查邮箱地址是否有效
              if (check_email_address($parentEmail)){
                  // 获取博客名称
                  $blog_name = get_bloginfo('name');
                  $admin_user = get_userdata(1); // 获取管理员用户对象
                  $admin_name = $admin_user ? $admin_user->display_name : "站长"; // 你的昵称
                  $title = "=?UTF-8?B?" . base64_encode("大佬您在【".$blog_name."】的评论有新回复啦") . "?=";
                  
                   // 获取头图 URL
                  $image_api = "https://www.loliapi.com/acg/pc/?type=json";
                  $image_data = json_decode(file_get_contents($image_api), true);
                  $image_url = isset($image_data['url']) ? $image_data['url'] : "https://oss.ilibilib.top/2025/03/21/67dd654dd65b0.png";
                  
                  // 获取评论内容
                  $parent_content = htmlspecialchars($parentComment->comment_content);
                  $comment_content = htmlspecialchars(get_comment_meta($id, "comment_content_source", true));
                  $comment_link = get_permalink($commentPostID) . "#comment-$id";
                  
                  // 获取一言 API 数据
                  $hitokoto_api = "https://v1.hitokoto.cn/?c=j&c=c&c=k&c=b&c=a&encode=json";
                  $hitokoto_data = json_decode(file_get_contents($hitokoto_api), true);
                  $hitokoto_text = isset($hitokoto_data['hitokoto']) ? $hitokoto_data['hitokoto'] : "今日无话";
                  $hitokoto_from = isset($hitokoto_data['from']) ? $hitokoto_data['from'] : "未知来源";
                  
                  // 使用 heredoc 语法编写 HTML
                  $html = <<<EOT
                  <html>
                  <head>
                      <style>
                          body {
                              font-family: Arial, sans-serif;
                              background-color: #f8f9fa;
                              color: #333;
                          }
                          .email-container {
                              background: #fff;
                              box-shadow: 0 15px 35px rgba(50,50,93,.1), 0 5px 15px rgba(0,0,0,.07);
                              border-radius: 6px;
                              margin: 15px auto 50px auto;
                              padding: 35px 30px;
                              max-width: 600px;
                              text-align: center;
                          }
                          .header-image {
                              max-width: 100%;
                              height: auto;
                              border-radius: 6px;
                              margin-bottom: 20px;
                          }
                          .comment-box {
                              background: rgba(0,0,0,.08);
                              padding: 20px;
                              border-radius: 6px;
                              box-shadow: 0 2px 4px rgba(0,0,0,.075);
                              margin-bottom: 20px;
                              text-align: left;
                          }
                          .reply-box {
                              background: #eef;
                              padding: 20px;
                              border-left: 4px solid #5e72e4;
                              border-radius: 6px;
                              margin-bottom: 20px;
                              text-align: left;
                          }
                          .btn {
                              display: inline-block;
                              background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
                              color: rgb(255, 255, 255);
                              padding: 14px 24px;
                              border-radius: 8px;
                              font-size: 16px;
                              font-weight: bold;
                              font-family: 'Arial Black', sans-serif;
                              box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
                              transition: all 0.3s ease-in-out;
                              margin-top: 10px;
                              text-decoration: none !important;
                          }
                          .btn:hover {
                              background: linear-gradient(135deg, #764ba2 0%, #667eea 100%);
                              transform: translateY(-2px);
                          }
                          .hitokoto-box {
                              padding: 15px;
                              font-style: italic;
                              margin-top: 20px;
                          }
                          .hitokoto-box a {
                              color: #5e72e4;
                              text-decoration: none;
                              font-weight: bold;
                          }
                      </style>
                  </head>
                  <body>
                      <div class="email-container">
                          <p>
                              <h1 style="display: inline; margin-right: 8px;">爱来自 <strong>{$blog_name}</strong></h1>
                              ——<a href="https://lxj.ilibilib.top" style="text-decoration: none; color: inherit; font-weight: bold; cursor: pointer;">@{$admin_name}</a>!
                          </p>
                          <img src="{$image_url}" alt="header-image" class="header-image" />
                          <p>大佬您好,您的评论在 <strong>{$blog_name}</strong> 收到了新的回复:</p>
                          <div class="comment-box">
                              <strong>您的评论:</strong>
                              <blockquote>{$parent_content}</blockquote>
                          </div>
                          <div class="reply-box">
                              <strong>@{$commentAuthor} 的回复:</strong>
                              <blockquote>{$comment_content}</blockquote>
                          </div>
                          <a href="{$comment_link}" class="btn">📩 <strong>前往查看</strong></a>
                          <div class="hitokoto-box">
                              <p>📖:『{$hitokoto_text}』—— <a href="https://hitokoto.cn/" target="_blank">{$hitokoto_from}</a></p>
                          </div>
                      </div>
                  </body>
                  </html>
                  EOT;
                  
                  $html = apply_filters("argon_comment_mail_notification_content", $html);
                  send_mail($emailTo, $title, $html);
              }
          }
      }
      

      注释是比较全的有需要可以自行进行修改

3.补充

  1. 做完这些步骤就可与直接进行测试了,使用两个邮箱进行评论和回复两个邮箱就可翼收到回复提醒了。
  2. 如有不严谨的地方还请大佬指出
  3. 代码中的一言api可以进行修改修改为自己喜欢的一言文库
  4. 邮件的头图也是由api获取的,可以自行进行修改。
  5. 有问题可以在下方的评论区提出。

好久没打理过博客了(2025/3/26)
很多静态资源失效了重新替换了一下
顺便加上了评论提醒的功能

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇