新鲜出炉的纯代码实现WordPress评论回复邮件提醒功能

原创 野人  2022-09-13 18:31  阅读 50 次

不得不说,网上关于WordPress中评论回复邮件提醒的功能,相关代码多的可怕,但是但是野人还是偏偏也写,毕竟折腾过的都要一一记录下来,别人的始终是别人的,只要自己实操了去写,去碰到问题,掌握了,才是自己的知识,哪怕是你复制过来的代码,也要动动小手去试试,因为不试不知道,一试吓一跳,卧槽,这么神奇啊,这就成功了啊!!!

所以,快来感受下折腾的乐趣吧,代码如下:

/**
 * 评论回复邮件通知
 */
function yr_comment_mail_notify($comment_id)
{
    $admin_email = get_bloginfo('admin_email'); // $admin_email 可改指定的 e-mail.
    $comment = get_comment($comment_id);
    $author = $comment->comment_author;
    $content = $comment->comment_content;
    $approved = $comment->comment_approved;
    $author_email = $comment->comment_author_email;
    // 校验是否是个正确的邮箱地址
    if (!is_email($author_email)) {
        return false;
    }
    $date = $comment->comment_date;
    $parent_id = $comment->comment_parent;
    // 存在被回复的父级id和评论的状态是通过的,才进行回复提醒,所以在评论审核通过的时候要记得发送邮件
    if ($parent_id !== '0' && $approved === '1') {
        $parent_comment = get_comment($parent_id); // 获取被回复人(或叫父级评论)相关信息
        $parent_author = $parent_comment->comment_author;
        $parent_content = $parent_comment->comment_content;
        $parent_post_ID = $parent_comment->comment_post_ID;
        $parent_date = $parent_comment->comment_date;
        $to = $parent_comment->comment_author_email;
        if (!is_email($to)) {
            return false;
        }
        // 回复的不是管理员的邮箱 && 回复和被回复的邮件不能相同
        if ($to && $to !== $author_email && $to !== $admin_email) {
            $post_ID_title = get_the_title($parent_post_ID);
            $blogname = get_option("blogname");
            $subject = "{$author}回复了您在文章《{$post_ID_title}》中的留言!";
            $message = '
<div style="background-color:#f8f8f8; border:1px solid #D2D1CB; color:#111; -moz-border-radius:8px; -webkit-border-radius:8px; -khtml-border-radius:8px; border-radius:8px; font-size:14px; width:702px; margin:0 auto; margin-top:10px;">
    <div style="background:#0e79cc; width:100%; height:60px; color:white; -moz-border-radius:6px 6px 0 0; -webkit-border-radius:6px 6px 0 0; -khtml-border-radius:6px 6px 0 0; border-radius:6px 6px 0 0; ">
    <span style="height:60px; line-height:60px; margin-left:30px; font-size:20px;"> 
        您在<strong>《' . $post_ID_title . '》</strong>上的评论有新回复啦!
    </span>
    </div>
    <div style="width:90%; margin:0 auto">
    <br />
    <p style="font-weight:600;">' . $parent_author . ' <span style="color: blue;">您好!</span></p>
    <p>您于 ' . $parent_date . ' 曾在《' . $post_ID_title . '》发表了如下的评论:</p>
    <p style="background-color: #fff;border:1px solid #eaeaea;padding: 20px;margin: 15px 0; -moz-border-radius:6px 6px; -webkit-border-radius:6px 6px;; -khtml-border-radius:6px 6px; border-radius:6px 6px;">
        ' . $parent_content . '
    </p>
    <p style="font-weight:600;">' . $author . ':</p>
    <p>已于 ' . $date . ' 给您做出如下的回复:</p>
    <p style="background-color: #fff;border:1px solid #eaeaea;padding: 20px;margin: 15px 0; -moz-border-radius:6px 6px; -webkit-border-radius:6px 6px;; -khtml-border-radius:6px 6px; border-radius:6px 6px;">
        ' . $content . '
    </p>
    <p>您可以点击<a href="' . htmlspecialchars(get_comment_link($parent_id, array('type' => 'comment'))) . '" style="color:#0e79cc" target="_blank">查看完整内容</a></p><br />
    <p style="font-weight:600;">温馨提示:</p>
    <p>1.本邮件由系统自动发出,请勿直接回复,谢谢!</p>
    </div>
    <div style="background:#0e79cc; width:100%; height:30px; color:white; -moz-border-radius:0 0 6px 6px; -webkit-border-radius:0 0 6px 6px;; -khtml-border-radius:0 0 6px 6px; border-radius:0 0 6px 6px; ">
    <span style="height:30px; line-height:30px; margin-left:30px; font-size:14px;">
        以后有空请多来访,<strong>『' . $blogname . '』</strong>在此谢谢您的支持!
    </span>
    </div>
</div>';
            $headers = "Content-Type: text/html; charset=" . get_option('blog_charset') . "";
            @wp_mail($to, $subject, $message, $headers);
        }
    }
}
add_action('comment_post', 'yr_comment_mail_notify');

/**
 * 评论通过审核后发送邮件提醒
 */
function yr_comment_unapproved_to_approved($comment)
{
    if (is_email($comment->comment_author_email)) {
        yr_comment_mail_notify($comment->comment_post_ID);
    }
}
add_action('comment_unapproved_to_approved', 'yr_comment_unapproved_to_approved');

代码虽长,但是不影响它的好使,好用。

本文地址:https://www.yerenwz.com/6259.html
版权声明:本文为原创文章,版权归 野人 所有,欢迎分享本文,转载请保留出处!

发表评论