Как изменить медиа-ответ wp json api

Я пытаюсь добавить дополнительное поле к ответу api wp json для конечной точки ‘/ media’.
После доктор, У меня это работает для «/ 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' );

Ни один из тех, кажется, не делает трюк.

конечная цель — добавить поле ‘srcset’ к ответу СМИ

С помощью

wp json api: версия 2.0-бета12

wordrpess: версия 4.4.2

Любая помощь будет оценена.

2

Решение

Вам нужно использовать тип 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';
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]