rest_prepare_(taxonomy)
Позволяет изменить данные термина в ответе REST API (непосредственно перед их возвратом).
Название фильтра формируется динамически на основании имени таксономии. Например:
- rest_prepare_category (для стандартных рубрик, таксономия category).
- rest_prepare_post_tag (для стандартных меток, таксономия post_tag).
Использование
add_filter( 'rest_prepare_(taxonomy)', 'wp_kama_rest_prepare_taxonomy_filter', 10, 3 );
/**
* Function for `rest_prepare_(taxonomy)` filter-hook.
*
* @param WP_REST_Response $response The response object.
* @param WP_Term $item The original term object.
* @param WP_REST_Request $request Request used to generate the response.
*
* @return WP_REST_Response
*/
function wp_kama_rest_prepare_taxonomy_filter( $response, $item, $request ){
// filter...
return $response;
}
- $response(WP_REST_Response)
- Объект ответа.
- $item(WP_Term)
- Объект термина.
- $request(WP_REST_Request)
- Объект запроса, используемый для генерации ответа.
Примеры
#1 Добавим в название рубрик язык от Polylang при REST запросе
add_filter( 'rest_prepare_category', 'filter_rest_name_category', 10, 3 );
/**
* Изменяет название рубрики при REST запросе в админке в виджете "Рубрики" и т.д.
*
* @param WP_REST_Response $response
* @param WP_Term $item
* @param WP_REST_Request $request
*
* @return WP_REST_Response
*/
function filter_rest_name_category( $response, $item, $request ) {
// Если Polylang не активирован - ничего не делаем.
if ( ! function_exists( 'pll_get_term_language' ) ) {
return $response;
}
// Если это не создание новой записи или редактирование старой - ничего не делаем.
$referer = $request->get_header( 'referer' );
$post_new = '/wp-admin/post-new.php';
$post_edit = '/wp-admin/post.php';
if ( strpos( $referer, $post_new ) === false && strpos( $referer, $post_edit ) === false ) {
return $response;
}
// Получаем код языка (ru_RU, en_US и так далее).
$lang = pll_get_term_language( $item->term_id, 'locale' );
// Добавляем к имени рубрики информацию о её языке.
$response->data['name'] .= " ($lang)";
// Возвращаем модифицированный ответ.
return $response;
}
Список изменений
| С версии 4.7.0 | Введена. |
Где вызывается хук
rest_prepare_(taxonomy)
wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php 976
return apply_filters( "rest_prepare_{$this->taxonomy}", $response, $item, $request );
wp-includes/rest-api/endpoints/class-wp-rest-terms-controller.php 906
return apply_filters( "rest_prepare_{$this->taxonomy}", new WP_REST_Response( array() ), $item, $request );
wp-includes/rest-api/endpoints/class-wp-rest-menus-controller.php 149
return apply_filters( "rest_prepare_{$this->taxonomy}", $response, $term, $request );
Где используется хук в WordPress
wp-includes/default-filters.php 797
add_filter( 'rest_prepare_page', 'insert_hooked_blocks_into_rest_response', 10, 2 );
wp-includes/default-filters.php 798
add_filter( 'rest_prepare_post', 'insert_hooked_blocks_into_rest_response', 10, 2 );
wp-includes/default-filters.php 799
add_filter( 'rest_prepare_wp_block', 'insert_hooked_blocks_into_rest_response', 10, 2 );
wp-includes/default-filters.php 800
add_filter( 'rest_prepare_wp_navigation', 'insert_hooked_blocks_into_rest_response', 10, 2 );