rest_prepare_(taxonomy)filter-hookWP 4.7.0

Allows you to modify term data in a REST API response immediately before it is returned.

The filter name is generated dynamically from the taxonomy name. For example:

  • rest_prepare_category (for standard categories, the category taxonomy).
  • rest_prepare_post_tag (for standard tags, the post_tag taxonomy).

Usage

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)
Response object.
$item(WP_Term)
Term object.
$request(WP_REST_Request)
Request object used to generate the response.

Examples

#1 Add the Polylang language to category names in a REST request

add_filter( 'rest_prepare_category', 'filter_rest_name_category', 10, 3 );

/**
 * Changes a category name in an admin REST request for the Categories widget, etc.
 *
 * @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 ) {

	// Do nothing if Polylang is not active.
	if ( ! function_exists( 'pll_get_term_language' ) ) {
		return $response;
	}

	// Do nothing unless a new post is being created or an existing one is being edited.
	$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;
	}

	// Get the language code (ru_RU, en_US, and so on).
	$lang = pll_get_term_language( $item->term_id, 'locale' );

	// Add language information to the category name.
	$response->data['name'] .= " ($lang)";

	// Return the modified response.
	return $response;
}

Changelog

Since 4.7.0 Introduced.

Where the hook is called

WP_REST_Terms_Controller::prepare_item_for_response()
rest_prepare_(taxonomy)
WP_REST_Menus_Controller::prepare_item_for_response()
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 );

Where the hook is used in WordPress

Usage not found.