修改多说插件,实现评论邮件通知自定义样式

其实一开始改插件不是因为想自定义邮件样式,只是因为收不到提醒邮件让我以为多说不发提醒邮件呢(好吧我到现在多说的提醒邮件一封都没收到过)。另外,好久以前有过改插件的想法,但是因为当时技术不行只能作罢。博客太小,没什么人看,最终渐渐的也就忘记了。直到最近几个月,一直有个神经病来骚扰,让我认识到了能够及时的知道博客的最新评论是有多好(删掉然后把 IP 扔黑名单比较方便) = =
Screenshot_2014-09-01-07-09-42
虽然设置里有。
Screenshot_2014-09-01-07-11-16Screenshot_2014-09-01-07-11-28
但就是收不到,不是只有我一个人。

好了,接下来说说怎么改的吧。
无意之间访问了博客后台的评论区,发现本地数据库与多说的数据库是同步的,想必,这一定是多说插件干的,去官网看了下开发者文档,果然如此。附链接 http://dev.duoshuo.com/docs/50037b11b66af78d0c000009
有回调,那就好办了。现在需要知道的就是它被回调时调用的函数在哪里就行了。打开 ./plugins/duoshuo/WordPress.php,发现了第 991 行有这样一个函数:

1
2
3
4
5
6
	/**
* 从服务器pull评论到本地
*
* @param array $posts
*/
public function createPost($post){

直觉告诉我应该改这个函数。
于是在其 1066 行之后,插入了一行代码,仅用来测试验证我的想法

1
wp_mail("admin@imjs.work","new reply",var_export($data,1));

结果的确收到了邮件,之后,要做的就是对内容分析并且写入邮件通知功能的代码了。
感谢小蒋,邮件样式是从他这里扒的。当然要改成别人的邮件样式我也没意见。完全原创的小清新邮件样式:云端,放出源码
上源码,依旧是 1066 行以后加入:

1
2
3
4
5
6
7
8
   if ($data['comment_parent'] && $data['comment_author_email']!==trim(get_comment($data['comment_parent'])->comment_author_email)) { //当父级评论存在时并且父级评论作者不是当前评论作者时发送通知邮件
$send_mess='<div style="background:#fff;zoom:1;position:relative;z-index:1;margin:50px auto;"><!--小蒋原创!--><table width="556" cellspacing="0" cellpadding="0" border="0" align="center" style="margin: 0 auto; font: normal 12px/1 微软雅黑,Tahoma,Helvetica,Arial,sans-serif; background: #fff; line-height: 20px;"><tbody><tr><td height="115" background="http://apps.qiniudn.com/cloud-mail/header.jpg"><!--小蒋博客!--><div style="padding: 0 30px 40px;"><h2 style="color:#fff;font-size:14px;font-weight:normal;padding:0;"><span style="color: #ED5224">&gt;&nbsp;</span>您在&nbsp;<!--小蒋原创!--><a style="text-decoration:none;color: #ED5224;" href="' . get_option('home') . '" title="' . get_option('blogname') . '" target="_blank">' . get_option('blogname') . '</a>&nbsp;中的留言有回复啦!</h2></div><!--小蒋博客!--></td></tr><tr><td valign="top" background="http://apps.qiniudn.com/cloud-mail/body.jpg" style="padding: 0 25px;"><table width="100%"><tbody><tr><td><div style="font-size:12px;color:#777;padding:0px 6px 1px;"><!--小蒋博客!--><p>' . trim(get_comment($data['comment_parent'])->comment_author) . '&nbsp;同学,您曾在《&nbsp;' . get_the_title($data['comment_post_ID']) . '&nbsp;》中发表评论:</p><p style="color: #777;border: 1px solid #DDD;padding: 5px 8px 5px 8px;background-color: #FCFCFC;border-radius: 3px 3px 3px 3px;font-size: 12px;line-height: 22px;font-family: Consolas,Courier,minispace,Lucida Console;">' . nl2br(get_comment($data['comment_parent'])->comment_content) . '</p><!--小蒋原创!--><p>' . trim($data['comment_author']) . '&nbsp;给您的回复如下:</p><p style="color: #777;border: 1px solid #DDD;padding: 5px 8px 5px 8px;background-color: #FCFCFC;border-radius: 3px 3px 3px 3px;font-size: 12px;line-height: 22px;font-family: Consolas,Courier,minispace,Lucida Console;">' . nl2br($data['comment_content']) . '</p><p>您可以点击&nbsp;<a style="text-decoration:none; color:#12addb" href="' . htmlspecialchars(get_comment_link($data['comment_parent'])) . '" title="单击查看完整的回复内容" target="_blank">&nbsp;查看完整的回复內容</a><!--小蒋原创!-->,欢迎回访&nbsp;<a style="text-decoration:none; color:#12addb" href="' . get_option('home') . '" title="' . get_option('blogname') . '" target="_blank">' . get_option('blogname') . '</a>&nbsp;!</p></div></td></tr></tbody></table></td></tr><tr><td height="15" background="http://apps.qiniudn.com/cloud-mail/footer.jpg"></td></tr></tbody></table></div><!--小蒋博客!-->';
wp_mail(trim(get_comment($data['comment_parent'])->comment_author_email),'您在 [' . get_option("blogname") . '] 的留言有了回复',$send_mess,"Content-Type: text/html;charset=utf-8");
}
if (get_the_author_meta('user_email',get_post($data['comment_post_ID'])->post_author)!==$data["comment_author_email"] && trim(get_comment($data['comment_parent'])->comment_author_email)!==get_the_author_meta('user_email',get_post($data['comment_post_ID'])->post_author)) { //当评论用户不是本文作者并且被回复的父级评论作者不是本文作者时发送邮件,后面一个条件为了防止发送两封邮件
$send_mess_2='<div style="background:#fff;zoom:1;position:relative;z-index:1;margin:50px auto;"><!--小蒋原创!--><table width="556" cellspacing="0" cellpadding="0" border="0" align="center" style="margin: 0 auto; font: normal 12px/1 微软雅黑,Tahoma,Helvetica,Arial,sans-serif; background: #fff; line-height: 20px;"><tbody><tr><td height="115" background="http://apps.qiniudn.com/cloud-mail/header.jpg"><!--小蒋博客!--><div style="padding: 0 30px 40px;"><h2 style="color:#fff;font-size:14px;font-weight:normal;padding:0;"><span style="color: #ED5224">&gt;&nbsp;</span>您发表的文章&nbsp;<!--小蒋原创!--><a style="text-decoration:none;color: #ED5224;" href="' . htmlspecialchars(get_comment_link($data['comment_ID'])) . '" title="' . get_the_title($data['comment_post_ID']) . '" target="_blank">' . get_the_title($data['comment_post_ID']) . '</a>&nbsp;有回复啦!</h2></div><!--小蒋博客!--></td></tr><tr><td valign="top" background="http://apps.qiniudn.com/cloud-mail/body.jpg" style="padding: 0 25px;"><table width="100%"><tbody><tr><td><div style="font-size:12px;color:#777;padding:0px 6px 1px;"><p>' . trim($data['comment_author']) . '&nbsp;给您的回复如下:</p><p style="color: #777;border: 1px solid #DDD;padding: 5px 8px 5px 8px;background-color: #FCFCFC;border-radius: 3px 3px 3px 3px;font-size: 12px;line-height: 22px;font-family: Consolas,Courier,minispace,Lucida Console;">' . nl2br($data['comment_content']) . '</p><p>您可以点击&nbsp;<a style="text-decoration:none; color:#12addb" href="' . htmlspecialchars(get_comment_link($data['comment_ID'])) . '" title="单击查看完整的回复内容" target="_blank">&nbsp;查看完整的回复內容</a></p></div></td></tr></tbody></table></td></tr><tr><td height="15" background="http://apps.qiniudn.com/cloud-mail/footer.jpg"></td></tr></tbody></table></div><!--小蒋博客!-->';
wp_mail(get_the_author_meta('user_email',get_post($data['comment_post_ID'])->post_author),'您的文章 ['.get_the_title($data['comment_post_ID']).'] 有了回复',$send_mess_2,"Content-Type: text/html;charset=utf-8");
}

OK,大功告成。

效果:
QQ图片20140901075808