WordPress评论回复及样式美化

文章目录

现在介绍的都是比较常用的功能,虽然简单,但是实用。今天大概介绍下wordpress如何实现评论回复以及进行样式美化

简单介绍及效果

实现评论回复功能主要包括两步:
1、通过回复ID,得到该回复下的所有评论,若有,循环向被回复人发送评论通知邮件
2、定义邮件内容,美化邮件样式
效果如图:

reply1

实现代码

在functions.php中加入以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//mail to notify
function comment_mail_notify($comment_id) {
   $comment = get_comment($comment_id);//根据id获取这条评论相关数据
   $content=$comment->comment_content;
   //对评论内容进行匹配
   $match_count=preg_match_all('/<a href="#comment-([0-9]+)?" rel="nofollow">/si',$content,$matchs);
   if($match_count>0){//如果匹配到了
   foreach($matchs[1] as $parent_id){//对每个子匹配都进行邮件发送操作
   SimPaled_send_email($parent_id,$comment);
   }
   }elseif($comment->comment_parent!='0'){//以防万一,有人故意删了@回复,还可以通过查找父级评论id来确定邮件发送对象
    $parent_id=$comment->comment_parent;
   SimPaled_send_email($parent_id,$comment);
   }else return;
   }
add_action('comment_post', 'comment_mail_notify');
function SimPaled_send_email($parent_id,$comment){//发送邮件的函数
   $admin_email = get_bloginfo ('admin_email');//管理员邮箱
   $parent_comment=get_comment($parent_id);//获取被回复人(或叫父级评论)相关信息
   $author_email=$comment->comment_author_email;//评论人邮箱
   $to = trim($parent_comment->comment_author_email);//被回复人邮箱
   $spam_confirmed = $comment->comment_approved;
   if ($spam_confirmed != 'spam' && $to != $admin_email && $to != $author_email) {
   $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 #666666; color:#111; -moz-border-radius:8px; -webkit-border-radius:8px; -khtml-border-radius:8px; border-radius:8px; font-size:12px; width:702px; margin:0 auto; margin-top:10px;">
    <div style="background:#666666; 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:12px;"> 您在<a style="text-decoration:none; color:#ff0;font-weight:600;"> [' . get_option("blogname") . '] </a>上的留言有回复啦!</span></div>
    <div style="width:90%; margin:0 auto">
      <p>' . trim(get_comment($parent_id)->comment_author) . ', 您好!</p>
      <p>您在《' . get_the_title($comment->comment_post_ID) . '》的留言:<br />
      <p style="background-color: #EEE;border: 1px solid #DDD;padding: 20px;margin: 15px 0;">'. trim(get_comment($parent_id)->comment_content) . '</p>
      <p>' . trim($comment->comment_author) . ' 给你的回复:<br />
      <p style="background-color: #EEE;border: 1px solid #DDD;padding: 20px;margin: 15px 0;">'. trim($comment->comment_content) . '</p>
      <p>你可以点击<a href="' . htmlspecialchars(get_comment_link($parent_id, array('type' => 'comment'))) . '">查看完整内容</a></p>
      <p>欢迎再度光临<a href="' . get_option('home') . '">' . get_option('blogname') . '</a></p>
      <p>(此邮件由系统自动发出, 请勿回复。)</p>
    </div></div>';
    $from = "From: \"" . get_option('blogname') . "\" <$wp_email>";
    $headers = "$from\nContent-Type: text/html; charset=" . get_option('blog_charset') . "\n";
    $message = convert_smilies($message);//转换代码为表情
    wp_mail( $to, $subject, $message, $headers );
}
}

小结

上述代码主要有两个特点:
1、在$message中对回复的样式进行了美化
2、通过$message = convert_smilies($message);这句代码将表情符号转化为表情
这个代码应该是比较完美的了!

本文出自 TENNFY博客,转载时请注明出处及相应链接。

本文永久链接: https://www.tennfy.com/1113.html

下一篇文章:

上一篇文章:

18人参与了讨论

  1. Youth.霖 说:

    还是很简陋的样子……

  2. Youth.霖 说:

    换火狐看。有效果了-_-#

  3. Era 说:

    你用的也是vps,为什么我的vps回复给别人的评论不能发送邮件。
    mail起作用。。

  4. Toner chip 说:

    放进去以后 functions.php 提示错误。 无奈。 :sad:

  5. 搜猪 说:

    试试看!!!!!!!!!1

  6. 灰姑娘 说:

    路过,效果不错。。
    和博主的风格较匹配。
    本来想试一下的,感觉和我用的主题风格不是很配就没有用啦! :oops:

  7. 榨菜 说:

    大神,这段代码直接复制上就行了吗?… :sad: 昨天少复制最后两个}},结果白了,现在搞好了,不太敢尝试了.

  8. 米木文艺 说:

    这个只改了回复的邮件,那么评论的邮件要怎么改呢?

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

2 + 4 = ?


您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

返回顶部