PHP警告:Call_User_Func()要求参数1是有效的回调

时间:2013-10-15 作者:Jimbo

困惑的编写一个插件,其他回调也可以很好地使用它。但添加元框时,回调失败,出现错误:

PHP警告:call\\u user\\u func()要求参数1为有效回调,第一个数组成员不是有效的类名或对象

相当标准的错误,但我不明白为什么我会收到它。我在一节课上有以下内容。

function __construct(){     
   add_action( \'init\', array( &$this, \'init\' ) );
}

function init() {
   add_action(\'add_meta_boxes\', function() { add_meta_box(\'model\', \'Parent\', array(&$this,\'parent_meta_box\'), \'model\', \'side\', \'high\');});
}

function parent_meta_box( $post ) {
   // whatever happens here...
}
据我所知,我使用&;正确地进行了回调;虽然出现了这种情况,但在metabox中什么也没有呈现,我收到了上面的标准PHP错误。我在我的代码中把它剥离到了这一步,它创建的元框不会在里面放任何东西。我已经把调试登录,它没有达到它,但得到之前和之后。不知道我做错了什么。非常感谢您的帮助。

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

$this 未在闭包范围内定义。将其更改为:

add_action(\'add_meta_boxes\', function() use ($this) { 
add_meta_box(\'model\', \'Parent\', array($this,\'parent_meta_box\'), \'model\', \'side\', \'high\');
});
或者最好将两者分开,创建一个真正的方法,而不是闭包。

结束

相关推荐

WordPress:可排序的Metabox字段不保存位置

我遇到了一个让我困惑的问题:升级到WP 3.6后,当您重新订购时,我的可排序metabox字段没有保存它们的位置。下面是我的代码:PHP:function save_box( $post_id ) { $post_type = get_post_type(); // verify nonce if ( ! isset( $_POST[\'custom_meta_box_nonce_field\'] ) ) return $p