Фильтр rest_prepare_(taxonomy)
позволяет изменять данные таксономии непосредственно перед их возвратом в REST API. Это удобно для добавления кастомной информации к категориям, тегам или любым другим таксономиям, чтобы передавать дополнительную информацию через REST API.
Динамическое название фильтра
Название фильтра rest_prepare_(taxonomy)
формируется динамически в зависимости от конкретной таксономии:
rest_prepare_category
— для стандартной таксономии рубрик (category
).rest_prepare_post_tag
— для стандартной таксономии меток (post_tag
).rest_prepare_<custom_taxonomy>
— для пользовательских таксономий.
apply_filters( 'rest_prepare_taxonomy', WP_REST_Response $response, WP_Taxonomy $item, WP_REST_Request $request );
- $response — объект
WP_REST_Response
, содержащий ответ, который будет возвращен REST API. - $item — объект
WP_Taxonomy
, представляющий оригинальные данные таксономии. - $request — объект
WP_REST_Request
, представляющий текущий запрос.
Пример 1: Добавление префикса к названию категорий
Этот пример добавляет префикс «Категория: » к каждому названию категории, возвращаемой через REST API, чтобы указывать, что данный термин является категорией.
add_filter( 'rest_prepare_category', function( $response, $item, $request ) {
$response->data['name'] = 'Категория: ' . $response->data['name'];
return $response;
}, 10, 3 );
После применения этого фильтра все запросы к REST API, которые возвращают категории, будут содержать измененное имя с префиксом.
Пример 2: Добавление количества постов для пользовательской таксономии
Следующий код добавляет количество записей, связанных с термином, к данным пользовательской таксономии product_tag
.
add_filter( 'rest_prepare_product_tag', function( $response, $item, $request ) {
$post_count = $item->count;
$response->data['post_count'] = $post_count;
return $response;
}, 10, 3 );
Теперь при запросе к REST API для таксономии product_tag
к ответу будет добавляться поле post_count
с количеством постов.
Пример 3: Добавление мета-данных к тегам при запросе через REST API
В этом примере к REST API запросу для таксономии тегов добавляется пользовательское поле color
, которое хранится в мета-данных термина.
add_filter( 'rest_prepare_post_tag', function( $response, $item, $request ) {
$color = get_term_meta( $item->term_id, 'color', true );
$response->data['color'] = $color ? $color : 'default';
return $response;
}, 10, 3 );
После установки этого фильтра данные каждого тега, возвращаемые через REST API, будут содержать дополнительное поле color
, значение которого можно задать в мета-полях термина.
Пример 4: Добавление информации о языке для Polylang
Этот фильтр добавляет к названию категории информацию о языке, если установлен плагин Polylang.
add_filter( 'rest_prepare_category', function( $response, $item, $request ) {
if ( function_exists( 'pll_get_term_language' ) ) {
$lang = pll_get_term_language( $item->term_id, 'locale' );
$response->data['name'] .= " ($lang)";
}
return $response;
}, 10, 3 );
В результате, при использовании Polylang, все категории в REST API будут возвращаться с указанием их языка в формате, например, Категория (ru_RU)
.
Заключение
Фильтр rest_prepare_(taxonomy)
предоставляет мощные возможности для изменения данных таксономии перед их возвратом в REST API WordPress. Это помогает обогатить данные, передаваемые API, что особенно полезно для приложений и интеграций, работающих с внешними сервисами.