我使用的是WP 4.6,rest api尚未包含在核心中。但我仍然可以使用rest_api_init
创建api端点。问题是如何将端点响应更改为正确的json格式?
这就是我所做的。
add_action( \'rest_api_init\', function () {
register_rest_route( \'news/v1\', \'/latest\', array(
\'methods\' => "GET",
\'callback\' =>\'get_latest_posts_api\',
) );
} );
function get_latest_posts_api($data ){
$data = array(
\'title\' => \'test title\',
\'content\' => \'blah blah blah......\'
);
return rest_ensure_response($data);
}
当我调用另一个wp站点中的端点时,什么都没有得到。
$recent_posts = wp_remote_get("http://xxxx.com/wp-json/news/v1/latest/");
$i = 1;
print_r(json_decode($recent_posts[\'body\'], true));//this give me nothing
echo $recent_posts[\'body\']; //this give me the raw data though.
当我直接在firefox上打开时,它会显示
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
问题是什么?
UPDATE
我添加了要返回的数据数组,但仍然得到了错误。
UPDATE
使用调试
json_last_error()
在解码响应时,它给了我
JSON_ERROR_SYNTAX
错误但我不明白,我想
register_rest_route
是否已处理转换为json?
我还尝试了在回调函数中使用json编码,但仍然得到了这个错误。
我迷路了。