知更鸟主题百度推送报错:cannot use object WP_ERROR as array

今天在博客中发布内容的时候,点击提交报了一个错误: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);

完整代码如下:

  1. // 主动推送
  2. if(!function_exists('Baidu_Submit')){
  3.     function Baidu_Submit($post_ID) {
  4.         $WEB_DOMAIN = get_option('home');
  5.         if(get_post_meta($post_ID,'Baidusubmit',true) == 1) return;
  6.         $url = get_permalink($post_ID);
  7.         $api = 'http://data.zz.baidu.com/urls?site='.$WEB_DOMAIN.'&token='.zm_get_option('token_p');
  8.         $request = new WP_Http;
  9.         $result = $request->request( $api , array( 'method' => 'POST', 'body' => $url , 'headers' => 'Content-Type: text/plain') );
  10.         $result = json_decode($result->body,true);
  11.         if (array_key_exists('success',$result)) {
  12.             add_post_meta($post_ID, 'Baidusubmit', 1, true);
  13.         }
  14.     }
  15.     add_action('publish_post', 'Baidu_Submit', 0);
  16. }

还有一种方法是直接用wp的内置函数,之所以报错原因是$result是一个对象。

题外话:

其实很多程序在开发的时候都经常会看到诸如上面的报错信息,原因就是不能把对象当成数组使用。了解了这个问题就变得容易解决了。

 

你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!