Wordpress 警告:call_user_func_array() 期望参数 1 是有效的回调,数组必须正好有两个成员

Posted

技术标签:

【中文标题】Wordpress 警告:call_user_func_array() 期望参数 1 是有效的回调,数组必须正好有两个成员【英文标题】:Wordpress Warning: call_user_func_array() expects parameter 1 to be a valid callback, array must have exactly two members 【发布时间】:2014-10-05 20:05:51 【问题描述】:

我正在尝试添加一个自定义函数,该函数将添加 Access-Control-Allow-Origin 标头,因为我无法访问服务器上的 .conf 文件。

下面是我的代码;

add_filter( 'wp_headers', array( 'eg_send_cors_headers' ), 10, 1 );

function eg_send_cors_headers( $headers ) 

    $headers['Access-Control-Allow-Origin']      = get_http_origin();
    $headers['Access-Control-Allow-Credentials'] = 'true';

    if ( 'OPTIONS' == $_SERVER['REQUEST_METHOD'] ) 
        if ( isset( $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'] ) ) 
                $headers['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS';
        

        if ( isset( $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'] ) ) 
            $headers['Access-Control-Allow-Headers'] = $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'];
        
    

    return $headers;

然后我在保存时收到此错误:

注意:未定义的偏移量:第 873 行 /example/wp-includes/plugin.php 中的 1 警告:call_user_func_array() 期望参数 1 是有效的回调,数组在 /example/wp-includes 中必须恰好有两个成员/plugin.php 第 192 行

【问题讨论】:

【参考方案1】:

嗯,我想通了。希望这对其他人有帮助。

由于我只是调用一个没有方法的函数,所以我只是在 add_filter 函数中删除了我的函数名周围的数组 ()。正如您在示例 #1 here 中看到的那样,如果您只调用带有参数的函数,则只需将函数名称用单引号括起来。

固定代码如下:

add_filter( 'wp_headers', 'eg_send_cors_headers', 10, 1 );
function eg_send_cors_headers( $headers ) 

        $headers['Access-Control-Allow-Origin']= get_http_origin(); 
        $headers['Access-Control-Allow-Credentials'] = 'true';


        if ( 'OPTIONS' == $_SERVER['REQUEST_METHOD'] ) 

            if ( isset( $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD'] ) ) 
                $headers['Access-Control-Allow-Methods'] = 'GET, POST, OPTIONS';
            

            if ( isset( $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'] ) ) 
                $headers['Access-Control-Allow-Headers'] = $_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'];
            

        

    return $headers;

【讨论】:

数组格式是当你想注册一个特定的对象方法或静态方法时。见php.net/manual/en/language.types.callable.php 感谢您发布您的解决方案。当我将一个函数移动到一个单独的包含文件中时,我遇到了同样的问题。

以上是关于Wordpress 警告:call_user_func_array() 期望参数 1 是有效的回调,数组必须正好有两个成员的主要内容,如果未能解决你的问题,请参考以下文章

使用 count() 修复 WordPress 插件文件中的 php sizeof 警告/错误

php WordPress:正在编辑帖子时,发出警告但允许其他人查看编辑屏幕。适用于远程培训情况。

Wordpress - The7 模板 - 在每个页面上我都有 4 个警告并且不知道如何在菜单或 php 站点/内容中禁用它

在Wordpress中显示IE8,IE7,IE6的浏览器升级警告

Wordpress 警告:call_user_func_array() 期望参数 1 是有效的回调,数组必须正好有两个成员

为啥我不能在 Wordpress 中创建新帖子?警告:从第 716 行 /public_html/wp-admin/includes/post.php 中的空值创建默认对象