如何修改wp json api媒体响应

时间:2016-03-24 14:39:59

标签: php wp-api

我正在尝试为'/ media'端点的wp json api响应添加一个额外的字段。 在doc之后,我将它用于'/ posts'或'/ pages',但我无法弄清楚如何为'/ media'端点添加字段。

所以(对于'/ posts'或'/ pages')这是有效的:

add_action( 'rest_api_init', 'np_register_extra_field' );
function np_register_extra_field() {
    register_rest_field( 'post',
    // register_rest_field( 'page', // this works too
        'extra_media_field',
        array(
          'get_callback'    => 'np_get_extra_field',
          'update_callback' => null,
          'schema'          => null,
        )
    );
}
function np_get_extra_field( $object, $field_name, $request ) {
    return 'foobar';
}

对于媒体来说,这不起作用,到目前为止我尝试过这样:

  add_action( 'rest_api_init', 'np_register_extra_field' );
  function np_register_extra_field() {
      register_rest_field( 'media',
          'extra_media_field',
          array(
              'get_callback'    => 'np_get_extra_field',
              'update_callback' => null,
              'schema'          => null,
          )
      );
  }
  function np_get_extra_field( $object, $field_name, $request ) {
    return 'foobar';
  }

我还尝试'挂钩'到其他过滤器中(这是一种正确的说法吗?)

add_action( 'rest_media_query', 'np_register_extra_field' );
add_action( 'rest_pre_insert_media', 'np_register_extra_field' );
add_action( 'rest_prepare_attachment', 'np_register_extra_field' );

似乎没有人能够做到这一点。

endgoal是将字段'srcset'添加到媒体响应

使用

wp json api:版本2.0-beta12

wordrpess:版本4.4.2

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要使用attachment类型而不是media。这应该有效:

  add_action( 'rest_api_init', 'np_register_extra_field' );
  function np_register_extra_field() {
      register_rest_field( 'attachment',
          'extra_media_field',
          array(
              'get_callback'    => 'np_get_extra_field',
              'update_callback' => null,
              'schema'          => null,
          )
      );
  }
  function np_get_extra_field( $object, $field_name, $request ) {
    return 'foobar';
  }