WordPress出现Warning: call_user_func_array() expects parameter 错误修复

1、 测试环境
wordpress4.7
Php7.01
2、产生背景
在添加wp评论插入emoji表情时,在functions.php中修改了原路径,当评论插入表情时,后台显示以上错误。
3、原因分析
Warning: call_user_func_array() expects parameter 1 to be a valid callback, function 'importFile' not found or invalid function name in /....../wp-includes/plugin.php on line 395
(1)无效返回值 importFile函数没有找到
(2)动态方法调用
call_user_func

namespace Foo;  
class F {  
    public function showAge ($age) {  
        return $age + 100;  
    }  
}  
call_user_func(__NAMESPACE__ . '\F::showAge',23);

call_user_func() expects parameter 1 to be a valid callback, non-static method Foo\F::showAge() should not be called statically
解释一下: 这个函数的第一个参数必须是 有效的回调函数, 非静态的方法showAge() 是不允许调用的.
需要的解决方案是:

namespace Foo;  
class F {  
    public static function showName ($name) {  
        return strtoupper($name);  
    }  
 
    public function showAge ($age) {  
        return $age + 100;  
    }  
}  
$f = new F();   
echo call_user_func(array($f, 'showAge'),23);

对于这样的动态函数的调用,必须提前进行对象实例化,
然后将实例化之后的对象传入函数作为第一个参数.
call_user_func_array :

namespace Foo;  
class F {  
    public static function showName ($name) {  
        return strtoupper($name);  
    }  
 
    public function showAge ($age) {  
        return $age + 100;  
    }  
}  
$f = new F();   
echo call_user_func_array(array($f, 'showAge'),array(23));

记住一点,call_user_func_array 传递的第二个参数必须是数组,
call_user_func 传递的第二个参数可能是数组.如果是多个参数的话,还是需要以列表的形式列出.

(3)我们不能修改原文件,采用下策:
屏蔽:php升级到5.4以后导致解决的办法就是在 php的配置文件php.ini中找到display_errors = Off(把on 改为Off)
(4)wordpress 中可以使用 @ini_set('display_errors','Off');关掉错误输出。


发布日期:

所属分类: Php 标签:


下一篇:

没有了,已经是最新文章