WP custom-functions.php文件问题

【WP custom-functions.php文件问题】我的wordpress主题中有一个custom-functions.php文件, 一旦将Wordpress更新到最新版本, 似乎会引起问题。任何人都可以在此代码中看到任何错误吗?
我在日志文件中收到此错误:

` PHP Fatal error:Cannot redeclare is_iterable() (previously declared in /home/smartservice/dev.smartservice.com/wp-includes/compat.php:536) in /home/smartservice/dev.smartservice.com/wp- content/themes/smartservice/custom_functions.php on line 40 `

我不熟悉Php, 但似乎已经过时了。我们在出现该错误的网站上使用PHP 7.0。
这些行的代码是custom-function.php
function is_iterable ( $var ) { return ( is_array($var) || $var instanceof Traversable ); }

和compact.php
function is_iterable( $var ) { return ( is_array( $var ) || $var instanceof Traversable ); }

#1我们不能用相同的名称声明两个函数, 如果声明, 则第一个函数将求值, 第二个函数将引发错误。
最好避免使用相同的函数名
对于你的情况, 请在custom-functions.php中将is_iterator函数重命名为其他名称。
#2PHP不允许2个函数具有相同的名称。由于一个核心WP文件定义了一个称为is_iterable()的函数, 因此你必须在custom-functions.php文件中重命名该函数。
当然, 如果你的功能与compat.php相同, 那么你可以放心地使用它, 而不是核心。
#3尽管其他两个答案是” 正确的” , 但还有更多要添加的内容, 令我惊讶的是, 没有提到!function_exists。
在PHP 7.1中, ” is_iterable” 被添加为” 内置” 函数;因此, 你现在进行的任何修复都应适合于迁移到更高版本的PHP。
PHP文档用户注释包括一个示例, 说明你的代码在使用PHP 7.1+和同时向后兼容PHP 5.6时的外观:
因此, 你需要同时修改compact.php和custom-function.php中的代码段。
if ( !function_exists('is_iterable' ) ) { function is_iterable( $var ) { return ( is_array( $var ) || $var instanceof Traversable ); // see note below } }

N.B.该文档示例还包括在检查” 可遍历性” 之前确保var是对象
return is_array( $var ) || ( is_object( $var ) & & ( $var instanceof \Traversable ) );

但我认为以前无需其他检查, 对你来说效果很好。
我不知道compact.php和custom-function.php文件是否始终都包含在所有Wordpress处理中-如果是这样, 你只需要修改compact.php并可以从custom-function.php中删除代码段即可。

    推荐阅读