kn007的个人博客
♥ You are here: Home > > > 全新WordPress评论管理系统

全新WordPress评论管理系统

by | 145 Comments


说实在的,一直想自己搞个评论系统。但因为时间关系,暂时先整出个管理系统来。

至于做这个轮子的原因,是因为Wordpress不知哪个版本开始,访问评论管理页面很慢,浏览器渲染完差不多7秒多。

访问慢的当时,已有1w+条评论(现在近2W)。我在Wordpress官方提交了issue,但一直无回复,后来我再评论一次,直接触发了规则被锁帖了。原因是无管理员回复,就继续评论,视为催促之类的,关闭之。

当时心里真是爆粗了,所以就萌生了自己做个评论系统。

但因为各种原因和懒癌发作,如今只完成了防机器人评论系统和本帖的评论信息管理系统。

说是系统其实只是装逼,但是确实快了很多。特别是MySQL在我精心调校下,速度特别快。

比起7秒+渲染,全AJAX评论管理系统,每次请求只要小于1秒的时间响应,带来非常快的体验。而且基本功能也都有,比如回复评论、编辑评论、删除评论、审核评论等。其中搜索能力及反应也很给力。

再来回顾下原生的Wordpress评论管理系统,在没有Object Cache的加成下,单页20条评论,需要40个查询,历时近4秒。

使用Memcached后,需要12个查询,历时近5.5秒。使用Memcached更慢的原因,在于非pipe,且一次有近30个查询。

为什么这个页面,查询这么多呢?

经过Debug后,其中有12个是正常查询;20个是对每条显示的评论做一次请求并缓存。还有8个,其中3条是对评论meta进行请求并缓存,id多会分成多条请求,我1w8+的评论分为3条请求;剩下5条是因为这20条评论涉及到5篇文章或页面,对post进行的请求并缓存。

我并不反对缓存,相反,热爱追求速度。但不要对没使用Object Cache的用户这么不友好,居然没有使用也要请求。而且因为没有使用Object Cache导致每次都要重新请求,我勒了个去,资源浪费啊。

使用Memcached,虽然在我这的执行时间变久了,但节省了查询,不用每次查一堆。而且对一些未优化过服务器,可能MySQL的效率并不会比Memcached快。加上我这个主题大量依赖Object Cache,所以,还是需要Memcached。

主题和后台每个页面都是秒开,就原生评论管理页面要7秒多,实在难以忍受。遂利用周末时间,搞定这个全新评论管理系统,秒开的感觉真好。

插件下载地址可在GithubRelease中获得,Wordpress官方插件地址传送门。当然,也可以在Wordpress后台,插件中搜索WordPress Comments Manager进行安装、启用。

当然,也可以在本页直接下载。

更新历史:
2017-01-22发布1.5版本:
1.优化查询
2.修复一些Bug

2017-01-21发布1.4版本:
1.双击某一行,显示评论内容和回复文本框
2.编辑评论和回复评论,可以使用Ctrl+Enter快速发布
3.代码规范化,上线Wordpress插件

2017-01-19发布1.3版本:
1.添加回复指定评论功能
2.审核POST到后台的数据

2017-01-18发布1.2版本:
1.代码规范化、兼容化,使用内置JQuery
2.逻辑上阻止XSS注入可能,请求权限检测

2017-01-16发布1.1版本:
1.给Site列添加超链接
2.双击某一行,完整显示评论内容

2017-01-12发布1.0版本:
第一次公开发行版本

下面放一些功能性展示的图片(1.3版本):

1.0版本:
















0.3版本:







Wordpress插件页面截图留念:

转载请注明转自:kn007的个人博客的《全新WordPress评论管理系统

donate
有所帮助?

Comments

145 Comments立即评论
Loading...
  1. 其实我觉得最好还是用原生的表格之类= =不然很不搭调
    另外可以尝试下直接勾在原生评论管理上,替换掉

    1. MOD回复

      @liwanglin12: 哈。没办法,没时间做UI这些,只能用现成的框架。
      替换原生,WP会要我命的。。。

  2. 回复

    已经用上了,真的好快!太感谢了

    1. MOD回复

      @FROYO: 新年好,客气了~

  3. LV2回复

    metadata 应该是用 `update_meta_cache()` 函数统一请求的吧,怎么会分开多条。
    我这边看,除了 zh_CN.php 的暴力选项删除和我自己的主题插件之外,评论页面应该在 15 条查询之内的样子。 :| :|

    1. MOD回复

      @斌果: 不知你有多少条评论和单页显示多少?
      我这边用query debug,显示的结果是这样的 :arrow:
      另外你是否有object cache,有的话,我是12条。 :x

    2. LV2回复

      @kn007: 刚才循环插了两万条评论,评论列表没看到有查询数量的增加,我在本地,没对象缓存,渲染一个页面需要的所有数据都是现场查询出来的。
      另外,即使把每页显示项目数改成 200,查询数量也是一条没有增加。
      可能是你的某个插件里有设计不科学的东西。 :razz: :razz:

    3. MOD回复

      @斌果: 问题是只有一个人可能是个例,我这周边可不止我一个有这个问题。我们这些卡的应该都有个共同点,就是wp_comment_meta表是空的。

      你可以发下你评论页查询的请求列表么?

      很遗憾,我之前也是这样想的,但把所有插件都删了也一样。

      而且我的插件就个地图插件,微信机器人和这个插件。

    4. MOD回复

      @斌果: 如果可以麻烦提供下你的WP_CACHE的值。我现在发现一个问题就是WP_CACHE永远为true。

    5. LV2回复

      @kn007: `WP_CACHE ` 是 `FLASE`.
      这是管理页面缓存的吧。 :oops: :oops:

    6. MOD回复

      @斌果: 强制false后,只剩下25条查询了,20条评论。不过php页面加载还是要3秒,跟以前一样。

  4. LV2回复

    就是这样的:
    http://p1.bqimg.com/567571/9a9ad984dd0029a0.png
    有关的请求就这三条。 :oops:

    1. LV2回复

      @斌果: 我手动把 commentmeta 表清空后也没问题。

    2. MOD回复

      @斌果: 。。。我说的单页面请求数,是完整的。等下我截个图给你吧。稍等

    3. MOD回复
    4. MOD回复

      @斌果: 从id里面看,你貌似没多少评论。。。 :sad:
      给你看看我的,查询的密集。。呵呵。。7M多的图片
      ~地址已被删除~

    5. LV2回复
    6. MOD回复

      @斌果: 我来试下显示200条

    7. LV2回复

      @kn007: 我才打开图片,一个页面显示那么多评论干嘛,200 条很够了吧。

    8. MOD回复

      @斌果: 我一个页面就20条。。

    9. LV2回复

      @kn007: 那为什么会这样……

    10. MOD回复

      @斌果: :mrgreen: 我也想知道

    11. MOD回复

      @斌果: 200条,压根无法忍
      c3914148c5f6f07588c2fbc8ed1f9843.png

    12. MOD回复

      @斌果: 他要请求全部,我也没办法 :x 我都不知道哪里有问题

    13. LV2回复

      @kn007: 这什么情况,我在线的环境用了对象缓存后台评论页总共才两条查询。

    14. MOD回复

      @斌果: .....

    15. MOD回复

      @斌果: 我用2017主题一样有问题。。
      我不大明白,为什么WP_CACHE一直为true,可能我的重新安装下看看。。

    16. MOD回复

      @斌果: 你说的两条,是跟评论有关的两条是吧。。

    17. MOD回复

      @斌果: 刚刚走开了下,我看下我的。我的要12条。。奇怪了

    18. MOD回复

      @斌果: 也是两条其实。。
      https://kn007.net/filecup/uploads/bde227ce358cc473e521da0d75729ff7.png
      zh_CN的查询还挺多的。。 :twisted:

    19. LV2回复

      @kn007: zh_CN 被我移除了。 ;-) ;-)

    1. @斌果: 评论等级提升飞快= = :roll:

    2. MOD回复

      @liwanglin12: 他以前也有经常来。。

    3. @kn007: 原来如此= =

  5. 这个插件功能无敌了

    1. MOD回复

      @路易大叔: 算是功能齐全啦。谢谢

  6. 是我用的服务器太渣?加载到100条,后面的就加载不出来了。链接: https://pan.baidu.com/s/1hrPg4qo 密码: hx52

    1. MOD回复

      @老杨: 你是用最新版吗?之前版本有个bug。 :grin:

    2. @kn007: WordPress 官网下的,我知道是什么问题了,因为 wp_comments,但是我数据库用的不是 wp_ 前缀。

    3. MOD回复

      @老杨: 额,我用的是 $wpdb->comments ,什么前缀都可以啊。。。 :grin:

    4. @kn007: 有一处是:wp_comments,你可以搜搜代码,除非更新过了。

    5. MOD回复

      @老杨: 再次感谢!

    6. @kn007: 我是刚从后台安装的,应该是 1.5 版本,改了就好了。 :idea:

    7. MOD回复

      @老杨: 还真是,因为是后面为了优化SQL改了后,忘记改回来了。。我擦,谢谢

    8. MOD回复

      @老杨: 已更新wordpress插件。

    9. @kn007: 真快!把这个(https://wordpress.org/plugins/dx-unanswered-comments/)也集成进去,再弄个非插件版就爽了,哈哈。

    10. MOD回复

      @老杨: 如果可以,你看下console有什么输出?还有network请求后的返回是怎么样的?

  7. 回复

    插件已试用,确实速度不错,两个很小很小的建议:
    1、能否把后台这个位置放靠上一点,比如放在“仪表盘”正下方,方便点击管理,尤其是在手机上管理,省的往下拉了。
    2、手机上管理界面可否调整自适应,毕竟屏幕太小了。。。。 :x

    1. MOD回复

      @老虎: 第一个问题,貌似没找到钩子,你可以点击admin-bar的小房子图标,有个菜单可以跳转(如果你没禁用的话)。
      第二个问题,属于基础框架问题,因为现在没时间,迟点我会废弃这个框架,纯css和js来做。
      给你带来不好的体验,抱歉了。

    2. 回复

      @kn007: 搜了下搜到一个“WP Admin UI Customize”……不想再增加插件了,先这样吧~
      应该有hook的。
      或者放在“+新建”旁边也行……
      不着急,等你下回更新一并改了好了。 :roll:
      谢了

    3. MOD回复

      @老虎: 我找空看下wp代码,印象中没哪个插件勾在仪表盘的子菜单里面。
      我自己就是放在+新建那里。囧。

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif