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

靖宸
靖宸
靖宸
16
文章
0
评论
2020年11月16日13:52:44Anything Order by Terms报: Invalid argument supplied for foreach() in已关闭评论 0 759字阅读2分31秒

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

问题背景

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

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

原因分析

谷歌翻译解释为“...中的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.在第308行下面添加一个  } 

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

4.或者如果你也用Anything Order by Terms v1.3.6版本

可以直接下载我修改好的class.php,然后上传至你的wp-content/plugins/anything-order-by-terms/modules/base/目录下解压缩覆盖即可。

通用解决方案

在php中使用foreach循环遍历时报Invalid argument supplied for foreach()错误,是因为循环的数据不是一个有效的数组。

因此我们只要在foreach之前判断一下数据源即可:

if(is_array($data)){foreach($data as $value){...}}

或者我们先定义一个空数组,然后为数组赋值,再进行foreach操作:

$data = array();
$data = ... ; //数组赋值操作;
foreach($data as $value){...}
靖宸