今天在博客中发布内容的时候,点击提交报了一个错误:cannot use object WP_ERROR as array,经过初步分析是由于发布内容时百度主动推送插件造成的。由于知更鸟主题内置了百度提交插件因此以下为解决方法。
1、找到报错的代码:/themes/begin/inc/function/default.php第547行,
将“$result = json_decode($result['body'],true);”改成:
$result = json_decode($result->body,true);
完整代码如下:
- // 主动推送
- if(!function_exists('Baidu_Submit')){
- function Baidu_Submit($post_ID) {
- $WEB_DOMAIN = get_option('home');
- if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
- $url = get_permalink($post_ID);
- $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.zm_get_option('token_p');
- $request = new WP_Http;
- $result = $request->request( $api , array( 'method' => 'POST', 'body' => $url , 'headers' => 'Content-Type: text/plain') );
- $result = json_decode($result->body,true);
- if (array_key_exists('success',$result)) {
- add_post_meta($post_ID, 'Baidusubmit', 1, true);
- }
- }
- add_action('publish_post', 'Baidu_Submit', 0);
- }
还有一种方法是直接用wp的内置函数,之所以报错原因是$result是一个对象。
题外话:
其实很多程序在开发的时候都经常会看到诸如上面的报错信息,原因就是不能把对象当成数组使用。了解了这个问题就变得容易解决了。