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