为WordPress帖子输出JSON
我正在使用JSON-API插件为WordPress和我正在创建一个自定义控制器,返回帖子类型的帖子列表。我想输出是这样的:为WordPress帖子输出JSON
[{
"id": 1,
"title": "Sample Post Title"
},
{
"id": 2,
"title": "Sample Post Title"
},
....
]
这里是我的自定义控制器:
class JSON_API_Custom_Controller {
public function get_posts_type() {
global $json_api;
$posts_all = array();
$args = array('post_type' => 'shopping', 'posts_per_page' => -1);
$loop = new WP_Query($args);
if ($loop->have_posts()) {
while ($loop->have_posts()) : $loop->the_post();
$post_id = get_the_ID();
$post_title = get_the_title($post_id);
$posts_all []= array(
'id' => $post_id,
'title' => $post_title
);
endwhile;
}
return $posts_all;
}
}
但输出是:
{
"status":"ok",
"0":{
"id":1,
"title":"sample title"
},
"1":{
"id":2,
"title":"sample title"
}
}
我怎么能输出对象的JSON数组像所需的输出?
我想加入status:ok
来json响应是插件的一个特性。
所以,你可以修改你的功能与一个键返回数组:
// not this
//return $posts_all;
// but this
return array('posts' => $posts_all);
之后,你仍然会在你的JSON响应status
关键,也是你将有posts
键,你可以迭代。
更新: 我想,过滤器json_api_encode
可能会帮助你。您可以在此取消设置status
键:
add_filter('json_api_encode', 'remove_status');
function remove_status($response) {
unset($response['status']);
return $response;
}
api实际上会返回编码的json,我只需确保它是以正确的格式。无论如何,我可以删除'ok'和'posts'吗? –
阅读手册后,我似乎找到了一种方法。查看更新。 –
真棒:)感谢您通过文档查找问题的解决方案。不知道为什么有人倒投了这个问题和所有的答案,但我标记的答案作为答案:) –
希望以下代码可以为您做到这一点。
return json_encode($posts_all);
要获得如示例输出中的“状态”,您需要在代码中添加相同的内容。
该API实际上返回编码的JSON,没有必要为此 –
雨,请通过代码,希望你可以理解我想告诉你什么, 123,'post_title'=>'test'); $ arr [1] = array('id'=> 124,'post_title'=>'test1'); echo json_encode($ arr); ?> – Tristup
哇似乎下来投票人在这里下来投票没有理由的一切! –