WP-Reader-Wall 插件兼容 WordPress 3.0的修改

wp-reader-wall是个有意思的插件,能在页面列出最近评论过的同学的头像。采用照片墙的方式,展示给用户,并且,头像的排序是根据评论的条数来排序的。
自从上次升级WordPress到3.0后,发现者插件没有正常工作了,索性禁用了此插件,也没时间仔细研究。今天特闲,所以决定拿这插件来研究研究。发现导致插件工作不正常的地方,是在插件的代码中定义select的sql语句,取读者数据的时候出了问题。把这句sql从插件中挖出来,在线上环境的mysql中执行了一下,果然取不到数据。刚开始,怀疑是sql语句的where条件的问题,后来逐个排除,没发现异常。最后,把重点放在了表名上,插件里面是用的一个全局变量:$tablecomments 来表示评论的表,索性直接替换成wp_comments试试,果然能取到数据了。看来$tablecomments在WordPress 3.0中失效了。去wordpress搜了一下,官方提到$tablecomments变量是不推崇的方式,可能已经被弃用。官方还建议了一些其他的全局变量的替代办法,如下:

image这样,我们可以遵循官方的建议,在WP-Reader-Wall插件的select语句中,用$wpdb->comments替代原来的$tablecomments,这样,插件就能正常在WordPress 3.0下使用了。总结了一下,关于WordPress升级遇到的一些问题,可以直接查阅官方文档,还有就是参考每个版本之间的变化,包括变量定义,以及数据库改动。这才是最好,最直接的办法。

具体修改方法,在WP-Reader-Wall.php中,找到如下的代码:

$request = "SELECT count(comment_ID) comment_nums,comment_author, comment_author_email,comment_author_url FROM $tablecomments  where comment_date》'".$cur_time_span."' AND comment_type='' AND comment_approved=1 group by comment_author_email order by count(comment_ID) DESC ";

修改为:

$request = "SELECT count(comment_ID) comment_nums,comment_author, comment_author_email,comment_author_url FROM ".$wpdb->comments.
" where comment_date>'".$cur_time_span."' AND comment_type='' AND comment_approved=1 group by comment_author_email order by count(comment
_ID) DESC ";
支持原创技术分享,据说打赏我的人,都找到了女朋友!