WP Rest API and json_decode()

时间:2016-02-24 作者:mmarquez

我逐渐熟悉了WP REST API 2插件,并开始遵循Torque\'s Guide.

一切似乎都很清楚,但我很难理解这个错误(请记住,我已经一步一步地遵循并回顾了所有方向。下面是我正在使用的函数:

$url = \'http://rbm.dev/wp-json/wp/v2/works/53\';

$response = wp_remote_get( $url );

function slug_get_json( $url ) {
    //GET the remote site
    $response = wp_remote_get( $url );
    //Check for error
    if ( is_wp_error( $response ) ) {
        return sprintf( \'The URL %1s could not be retrieved.\', $url ); //get just the body
        $data = wp_remote_retrieve_body( $response );
    }
    //return if not an error
    if ( ! is_wp_error( $response ) ) { //decode and return
        return json_decode( $response );
    }
}
如果通过restful客户端(如PAW)或直接从浏览器访问,我可以很容易地看到JSON对象。但函数返回的是:

Warning: json_decode() expects parameter 1 to be string, array given...
我理解函数的逻辑,但由于我对这一点很陌生,所以我对错误不确定。不确定为什么json\\u decode()没有按预期方式接收数据。请记住,这正是Torque的书中的内容--函数的语法是否有错误?

谢谢

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

wp_remote_get 返回包含键的结果数组body, headers, response 等等,取决于参数。

json_decode 仅接受JSON字符串。因此,请以这种方式更正您的代码

//return if not an error
    if ( ! is_wp_error( $response ) ) { //decode and return
        return json_decode( wp_remote_retrieve_body( $response ) );
    }
参考号:Return Values of wp_remote_get or wp_remote_post