问题背景
更新了Anything Order by Terms到v1.3.6版本后在文章分类目录页面会报这个错误Invalid argument supplied for foreach
原因分析
谷歌翻译解释为“...中的foreach()提供了无效的参数”,也就是说里面循环的数据不是一个有效的数组。
解决办法
1.打开文件 wp-content/plugins/anything-order-by-terms/modules/base/class.php
2.在282行上面添加一行代码
if(is_array($q)){
3.在第308行下面添加一个 }
4.或者如果你也用Anything Order by Terms v1.3.6版本
可以直接下载我修改好的class.php,然后上传至你的wp-content/plugins/anything-order-by-terms/modules/base/目录下解压缩覆盖即可。
2020.1.9 如非必要的站,本人已不再使用此插件了,原因是此插件和很多其他主题/插件有冲突,应该是插件设计上的缺陷导致的。
通用解决方案
在php中使用foreach循环遍历时报Invalid argument supplied for foreach()错误,是因为循环的数据不是一个有效的数组。
因此我们只要在foreach之前判断一下数据源即可:
if(is_array($data)){foreach($data as $value){...}}
或者我们先定义一个空数组,然后为数组赋值,再进行foreach操作:
$data = array(); $data = ... ; //数组赋值操作; foreach($data as $value){...}
评论