个性化阅读
专注于IT技术分析

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函数重命名为其他名称。


#2


PHP不允许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中删除代码段即可。

赞(0)
未经允许不得转载:srcmini » WP custom-functions.php文件问题

评论 抢沙发

评论前必须登录!