Anything Order by Terms报: Invalid argument supplied for foreach() in

吾爱分享 建站运维 编程开发Anything Order by Terms报: Invalid argument supplied for foreach() in已关闭评论432字数 325阅读1分5秒阅读模式

Anything Order by Terms报: Invalid argument supplied for foreach() in-图片1

问题背景

更新了Anything Order by Terms到v1.3.6版本后在文章分类目录页面会报这个错误Invalid argument supplied for foreach

Anything Order by Terms报: Invalid argument supplied for foreach() in-图片2

原因分析

谷歌翻译解释为“...中的foreach()提供了无效的参数”,也就是说里面循环的数据不是一个有效的数组。

解决办法

1.打开文件 wp-content/plugins/anything-order-by-terms/modules/base/class.php

2.在282行上面添加一行代码

if(is_array($q)){

Anything Order by Terms报: Invalid argument supplied for foreach() in-图片3

3.在第308行下面添加一个  }

Anything Order by Terms报: Invalid argument supplied for foreach() in-图片4

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){...}

 最后更新:2021-1-9
吾爱分享