[WordPress] WP-APIの不要な項目を削除する
1 min read
概要
WP-API のwp-json/wp/v2/posts/%post_id%
を叩くと以下のような JSON データが返ってくる(一部抜粋)
{
"id": 843,
"date": "2017-10-05T19:47:33",
"date_gmt": "2017-10-05T10:47:33",
"guid": {
"rendered": "https://b.0218.jp/?p=3343"
},
"modified": "2017-10-06T16:40:09",
"modified_gmt": "2017-10-06T07:40:09",
"slug": "wordpress-wp-api-hoge",
"status": "publish",
"type": "post",
"link": "https://b.0218.jp/wordpress-wp-api-hoge.html",
"title": {
"rendered": "hoge hoge"
},
"content": {
"rendered": "hoge hoge"
},
"author": 2,
"featured_media": 157,
"comment_status": "open",
"ping_status": "open",
"sticky": false,
"template": "",
"format": "standard",
"meta": []
...
}
個人的にauthor
やfeatured_media
の項目は不要だったし、データサイズが少しでも減るのであれば嬉しいのでバックエンド側で握りつぶすことにした。
対応方法
フィルターフック(rest_prepare_post
)を使用する。
add_filter('rest_prepare_post', function($response, $post, $request) {
unset($response->data['author']);
unset($response->data['featured_media']);
return $response;
}, 10, 3);
引数に$response
というオブジェクトが渡される。削除したい項目が$response-data
にあるので上記のようにunset()
して、return してやれば良い。