wordpress

《WordPress评论从畅言到原生》

上一篇文章中,我提到了畅言的种种槽点
并且还逐渐出现了各种垃圾评论
不堪忍受的我最终一怒决定回到原生

修补畅言留下的坑

删掉畅言后,会发现以前通过畅言回复的一些评论的层级关系丢失
意思就是我原本回复另一条评论的评论,在删掉畅言后变成了一条独立的评论
还好这只是部分发生。进入数据库wp_comments表,修改comment_parent字段即可修复回复关系

然后是出现重复评论的问题,也是部分发生,情况类似

第一条发表于畅言安装时,第二条是好几年前用户发的
同步就同步吧,还搞出了重复的玩意儿,而且还丢失了信息
打算写个脚本解决这个问题,先不管了

20170411:脚本已完成,详见修复卸载畅言后出现随机重复评论的脚本

其次是回复者id问题。如果是博客用户进行评论的话,则user_id字段不为0
在一些主题下(例如我在用的这个Minty),管理员发表的评论上会出现特殊身份标记

鉴于很多个人博客并不开放注册(例如我),那么这个字段的值就只会是0或1
虽然我是博主,但通过畅言的评论并不会标记我的博主身份,即user_id=0,也就没有了上图中的特殊标记
所以需要执行一段SQL进行修复。例如我就执行了:

如果你也要这么做,还得考虑你的实际情况。例如可能会有其他人用了你邮箱?或者你的管理员id不是1之类的

小部件 – 最新评论

第三方评论往往自带最新评论小部件,放在侧边栏不错
干掉了第三方,最新评论功能咋办?
……
我也不知道咋办哈哈哈哈哈!
我的主题Minty自带此小部件,我直接用上了

新评论邮件通知

WordPress是自带新评论邮件通知的,但要用上它,一般需要做两件事
一是到后台设置讨论发送电子邮件通知我里面勾上它
二是到插件管理安装一款SMTP邮件插件,例如我在用的WP-Mail-SMTP
为什么要装个插件呢?因为很多服务器都会屏蔽PHP的mail()函数或者25端口
因此就需要SMTP插件来重写wp_mail()函数以正常发送邮件
随便注册个国内邮箱,开通SMTP服务,然后把相关参数填进插件,保存,搞定
每当你的文章有新的评论时,wordpress就会用这个邮箱向你的邮箱发送通知邮件

评论被回复邮件通知

这是Wordpress没有自带的功能,需要我们自己实现
虽然也有几个能够实现这个功能的插件,但我试了下都已经无法使用或太过臃肿了
要发出邮件,首先要安装上面说的SMTP插件。然后就是在评论提交的地方挂个钩,触发邮件发送
具体我是参照这篇文章:WordPress 评论回复邮件通知 优化

不过我觉得这邮件样式不好看,于是跑去友链里抄了夜绫千裕
顺手改了下,给通知邮件里的文章标题加上了链接,感觉更方便些
想知道长啥样?在下方评论一个即可

解决通知邮件泄露服务器真实IP的问题

邮件原文里是能够看到发信服务器的IP地址的(SMTP也一样),这是个隐患
以前为了开源项目贴吧云签到到处喷版权狗时,博客经常被打
虽说规模不大,免费的DDOS防护基本够用,但还影响访问还是挺烦的不是?
虽然这几年已经没再出现了,但小心点总是没错的。尽可能还是不要泄露服务器的IP吧
既然没法在本机上发信了,那就只能找那些商业邮件代发服务了
简单搜了下,国内比较出名的是SendCloud,每日免费200封;国外比较出名的是mailgun,每月免费1w封
听起来是不是后面这个很美好?然而不少网友都说mailgun发出的邮件会被QQ邮箱花式拒收
我个人博客这么小的体量,肯定是轮不到我来和QQ邮箱部门协商解决的,那就只能选择前者了
简单注册后,绑定域名(强烈推荐绑个三级域名即可),做几个简单的小任务即可获得200/日的免费额度
然后调用他们提供的接口来发邮件即可实现隐藏真实IP的效果啦~

顺道一提,SendCloud的API_USER必须是全系统唯一的,而不仅仅是在你的域名下唯一
我一开始想弄个no_reply,被告知已存在,一脸懵逼,我这除了一个默认生成的测试USER以外就啥也没有了啊?
也许是保留关键字?那我换个blog_notice,依然报错已存在
最后发了工单才知道原来这个API_USER必须是全系统唯一的,我填了个mokeyjay_blog_notice才算成功

再顺道一提,如果你也被SendCloud的模板邮件接口的substitution_vars坑到了,请直接拉到最下面看我的代码

(全文完)

附录

鉴于很可能有人会问,我就把我的邮件模板和修改后的通知代码放出来吧,方便下大家
也希望受到帮助的人能够留言以示谢意

SendCloud邮件模板

评论被回复邮件通知

13 条评论

昵称
  1. MikuSama

    今天才用上~感谢

  2. 后知后觉

    submail每天500封免费 进垃圾箱的次数一般 阿里的完全不行 基本都在垃圾箱里 sendcloud很好就是太贵了

    1. mokeyjay

      感谢,已收藏,以后有需要就转过去