运行浏览量计数器遇非数值错误:template-functions.php第163行报错
解决浏览量计数器的Non-numeric value encountered警告问题
你遇到的这个Warning: A non-numeric value encountered警告,根源在于第163行调用ev_get_post_views()获取的浏览量数据不是合法的数值类型——可能是空字符串、null,或是带有非数字字符的内容,PHP在尝试对非数值进行格式化操作时就会抛出这个警告。
下面给你几个靠谱的解决办法:
方法一:强制转换为整数
直接把获取到的浏览量值强制转为整数,确保后续处理的是纯数值,修改第163行附近的代码:
// 替换原来的$meta = function_exists( 'ev_get_post_... 这一行 $views_raw = function_exists('ev_get_post_views') ? ev_get_post_views(get_the_ID()) : 0; $meta = (int)$views_raw; // 强制转为整数,彻底避免非数值问题
方法二:添加非数值校验并设置默认值
如果担心强制转换不够稳妥,可以先判断返回值是否为有效数值,不是的话直接设为默认值0:
$views_raw = function_exists('ev_get_post_views') ? ev_get_post_views(get_the_ID()) : 0; // 先校验是否为数值,再赋值,确保万无一失 $meta = is_numeric($views_raw) ? (int)$views_raw : 0;
方法三:检查存储的元数据本身
如果上面的方法还是没解决问题,可能是数据库里存储的浏览量数据本身就有问题。你可以去WordPress的wp_postmeta表中,找到对应文章的浏览量字段(通常是_post_views这类键名),看看字段值是不是合法的数字,手动修正那些异常的非数值内容。
另外,你也可以排查下ev_get_post_views()函数的实现——如果这个函数是某个插件提供的,看看它在没有浏览量记录的时候是不是返回了空字符串之类的非数值,必要的话可以给函数加个过滤逻辑,或者联系插件开发者修复这个小bug。
内容的提问来源于stack exchange,提问作者Eren Arıcı
相关产品推荐
相关产品推荐

