很早就发现wp-postviews计数最高位有问题,一直没管,今天终于把它解决了。

具体表现如下:

一篇文章的初始计数是10,从10,11,12。。。。一直到19,每次的增长是正确的。不过从19-20的时候计数值会变成110。当到了199的时候又会从199调到1100。1199到1200是正常的,1999到2000的时候又会出问题,变成11000。

分析数列后发现其计数值最高位有问题,也就是说多了最高位,实际情况是10对应0,110对应10,1100和11000对应100和1000。

为什么会这样呢?我分析了后台调用,

<?php if(function_exists('the_views')) { the_views('views', true); } ?>
并没有问题,难道是wp-postviews函数自己出了问题?我看了数据库,其计数值是准确的,只是调用输出后才会这样。

最后分析the_views函数,发现

$output = $prefix.str_replace('%VIEW_COUNT%', number_format_i18n($post_views), $views_options['template']).$postfix;

这句话会造成问题,那个$prefix竟然是会1,也就是输出计数的最高位,真无语。

解决起来倒是很简单,去掉$prefix,把上面那句话改成

$output = str_replace('%VIEW_COUNT%', number_format_i18n($post_views), $views_options['template']).$postfix;

就可以了。

标签: ,

留下回复(本站有评论邮件通知功能)