rest_prepare_(taxonomy) хук-фильтр . WP 4.7.0

Click here to view original web page at wp-kama.ru

Позволяет изменить данные термина в ответе REST API (непосредственно перед их возвратом).

Название фильтра формируется динамически на основании имени таксономии. Например:

  • rest_prepare_category (для стандартных рубрик, таксономия category).
  • rest_prepare_post_tag (для стандартных меток, таксономия post_tag).

Использование

add_filter( 'rest_prepare_(taxonomy)', 'filter_function_name_2559', 10, 3 );
function filter_function_name_2559( $response, $item, $request ){
	// Изменяем что-либо...

	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;
}

Список изменений

Где вызывается хук

rest_prepare_(taxonomy)

Где используется хук в ядре WordPress

Использование не найдено.