1

私は WP REST API (WP API) を使用しており、以下の呼び出しで投稿を取得しています。

wp-json/posts

170 件の投稿があり、JSON ファイルは 3.1 MB で、ダウンロードに約 9 秒かかります。投稿を取得するときに必要なデータはタイトルとフィーチャー画像だけなので、JSON ファイルの 99% は必要ありません。

ID応答からフィールドを削除する以下のメソッドを見てきましたが、ある程度は機能しますが、やなどのフィールドはまだ削除されませんauthor

function remove_extra_data( $data, $post, $context ) {
  unset( $data['ID'] );
  unset( $data['status'] );
  unset( $data['excerpt'] );
  unset( $data['type'] );
  unset( $data['author'] );
  unset( $data['content'] );
  unset( $data['parent'] );
  unset( $data['date'] );
  unset( $data['modified'] );
  unset( $data['format'] );
  unset( $data['slug'] );
  unset( $data['guid'] );
  unset( $data['menu_order'] );
  unset( $data['comment_status'] );
  unset( $data['ping_status'] );
  unset( $data['sticky'] );
  unset( $data['date_tz'] );
  unset( $data['date_gmt'] );
  unset( $data['modified_tz'] );
  unset( $data['modified_gmt'] );
  unset( $data['meta'] );
  return $data;
}

add_filter( 'json_prepare_post', 'remove_extra_data', 10, 3 );

ネストされたコンテンツを持つフィールドを含むすべての不要なフィールドを削除する最良の方法は何ですか?

4

1 に答える 1

0

JSON がオブジェクトではなく配列として厳密にデコードされている場合は、不要なarray_filter()プロパティを除外するようなものを使用できます。

// This will only work in PHP 5.6+
$keys = [
    'ID',
    'author',
];
return array_filter($data, function($k) use ($keys) {
    return in_array($k, $keys, true);
}, ARRAY_FILTER_USE_KEY);
于 2015-06-26T16:30:27.643 に答える