WP_Http响应抛出“无法将WP_ERROR类型的对象用作数组”

时间:2019-06-26 作者:Bryan

我的插件抛出错误“不能将WP\\u error类型的对象用作数组”。问题是。。。

$http = new WP_Http();
$response = $http->request( $url, array(\'timeout\' => 20));

if( $response[\'response\'][\'code\'] != 200 ) { // THIS IS THE LINE
    return false;
}

$upload = wp_upload_bits( basename($url), null, $response[\'body\'] );
所以问题是$response只有一个结果,所以它不是数组?如何修复此问题?

2 个回复
SO网友:ngearing

更新的if语句的逻辑错误。

if( !is_wp_error($response) && $response[\'response\'][\'code\'] != 200 )

你是在说;如果不是wp\\U错误和响应代码NOT 200,则返回false。所以您实际上没有捕捉到WP\\U错误

我相信你想要的是:

if ( is_wp_error($response) || $response[\'response\'][\'code\'] != 200 ) return false;

wp\\U错误或代码不是200

SO网友:Bryan

好吧,我想这样做可能已经解决了。。。

$http = new WP_Http();
$response = $http->request( $url, array(\'timeout\' => 20));

$response = is_array($response) ? $response : array($response);

if( is_wp_error($response) && isset($response) && $response[\'response\'][\'code\'] != 200 ) {
    return false;
}

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。