Thursday, February 9, 2012

wordpress的评论邮件回复功能

2009-04-24 by zhiwei  

相信现在很多人都在使用wordpress的那个评论回复的插件(WP Thread Comment)吧,其中有个功能是当评论者的评论被人回复后可以邮件通知,通知的电子邮件地址一般都是 no-reply@博客地址,很不够个性,我今天看了下这个插件的代码,发现这个发件人地址是可以更改的,并且可以改成任意你想要的发件人地址,具体做法请看下段文字。顺便说一下,邮件发件人的地址并不是真正的发件人地址,真正的发件人地址在信头文件里,所以以后看到一些邮件,并且地址是自己熟悉的带有欺骗性质的邮件一定要看一下信头文件,看看是不是真实的邮件。
编辑WP Thread Comment 插件的代码,找到这一行代码,
$wp_email = ‘no-reply@’ . preg_replace(‘#^www\.#’, ”,  strtolower($_SERVER['SERVER_NAME']));
然后将这一行代码做以下修改,$wp_email = ‘*@XX.com’; 其中 *@XX.com 就是你想要的发件人地址。改好后自己测试一下吧。

update: 更新一下,新版的wordpress后台已经有嵌套评论了(wordpress后台->设置->讨论->其他评论设置->允许嵌套N条评论),所以这个thread comment插件一般也就用不上了,可以使用comment-reply-notification这个插件来代替,安装这个插件并激活后可以到wordpress后台设置那里来对该插件做详细设置。具体设置方法可以参考插件页面。另外,自定义邮箱地址在我的主机上不能使用。

update20101210:现在已经可以不用插件来实现评论邮件回复了。我已经使用半年了,感觉很不错,将以下代码贴到主题的functions.php文件中的合适位置即可实现评论邮件回复功能。这样一来,你的wordpress博客就可以少用一个插件了。

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
/* comment_mail_notify v1.0 by willin kan. (reply all comments) */
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 = 'wordpress@' . preg_replace('#^www\.#', '', strtolower($_SERVER['SERVER_NAME']));	//from email address
    $to = trim(get_comment($parent_id)->comment_author_email);	//to email address
    $subject = '您在 [' . get_option("blogname") . '] 的留言有了回应';
    $message = '
    <div style="background-color:#eef2fa; border:1px solid #d8e3e8; color:#111; padding:0 15px; -moz-border-radius:5px; -webkit-border-radius:5px; -khtml-border-radius:5px;">
      <p>' . trim(get_comment($parent_id)->comment_author) . ', 您好!</p>
      <p>您曾在《' . get_the_title($comment->comment_post_ID) . '》的留言:<br /><b>'
       . trim(get_comment($parent_id)->comment_content) . '</b></p>
      <p>' . trim($comment->comment_author) . ' 给您的回应:<br /><b>'
       . trim($comment->comment_content) . '</b><br /></p>
      <p>您可以点击 <a href="' . htmlspecialchars(get_comment_link($parent_id)) . '">查看回应完整內容</a></p>
      <p>欢迎再次访问 <a href="' . get_option('home') . '"><b>' . get_option('blogname') . '</b></a></p>
      <p><b>注:此邮件由系统发出,但您的回复将发送至我的收件箱。</b></p>
    </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 );
  }
}
add_action('comment_post', 'comment_mail_notify');

© 2009, chenzhiwei.net. 版权所有.
本文永久链接:http://chenzhiwei.net/2009/04/wordpress-comments-reply/

Comments

3 Responses to “wordpress的评论邮件回复功能”
  1. 短歌行 说道:

    你的博客看上去很漂亮,加油呀!我来回访了。

  2. admin 说道:

    呵呵,用的是国外的一个主题,shades of blue,我感觉很简洁所以就使用了。你的主题也不错哦,适合自己的才是最好的。。

Speak Your Mind