很早就发现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;
就可以了。