PHP 7.3环境下WordPress站点出现非数值错误,求代码修复方案
修复WordPress中"A non-numeric value encountered"警告的方法
这个警告是PHP 7.1+引入的严格类型检查带来的问题——问题出在$num_words变量被传入了非数值类型(比如字符串、null或者布尔值),导致$num_words + 1这个数值运算触发了警告。
要直接修改formatting.php第3378行的代码,你需要确保$num_words被强制转换为整数后再参与运算,具体修改如下:
把原代码:
$words_array = preg_split( "/[\n\r\t ]+/", $text, $num_words + 1, PREG_SPLIT_NO_EMPTY );
修改为:
$words_array = preg_split( "/[\n\r\t ]+/", $text, (int)$num_words + 1, PREG_SPLIT_NO_EMPTY );
为什么这样有效?
(int)强制类型转换会把任何非整数的$num_words转为合理的整数:
- 如果是字符串型的数字(比如
"5"),会转为对应的整数5; - 如果是
null、空字符串或者非数字字符串,会转为0; - 如果是布尔值,
true转为1,false转为0。
这样$num_words + 1就变成了合法的数值运算,警告自然就消失了。
额外建议
虽然修改核心文件能快速解决问题,但更稳妥的做法是找到调用wp_trim_words()函数的地方(可能是你的主题或插件代码),确保传入的$num_words参数是整数类型。不过如果暂时定位不到调用点,上面的修改可以作为临时有效的解决方案。
内容的提问来源于stack exchange,提问作者user3612498
相关产品推荐
相关产品推荐

