WP_REST_Block_Directory_Controller::prepare_item_for_response()publicWP 5.5.0

Parse block metadata for a block, and prepare it for an API response.

Method of the class: WP_REST_Block_Directory_Controller{}

No Hooks.

Return

WP_REST_Response|WP_Error. Response object on success, or WP_Error object on failure.

Usage

$WP_REST_Block_Directory_Controller = new WP_REST_Block_Directory_Controller();
$WP_REST_Block_Directory_Controller->prepare_item_for_response( $item, $request );
$item(array) (required)
The plugin metadata.
$request(WP_REST_Request) (required)
Request object.

Changelog

Since 5.5.0 Introduced.
Since 5.9.0 Renamed $plugin to $item to match parent class for PHP 8 named parameter support.

WP_REST_Block_Directory_Controller::prepare_item_for_response() code WP 6.4.3

public function prepare_item_for_response( $item, $request ) {
	// Restores the more descriptive, specific name for use within this method.
	$plugin = $item;

	$fields = $this->get_fields_for_response( $request );

	// There might be multiple blocks in a plugin. Only the first block is mapped.
	$block_data = reset( $plugin['blocks'] );

	// A data array containing the properties we'll return.
	$block = array(
		'name'                => $block_data['name'],
		'title'               => ( $block_data['title'] ? $block_data['title'] : $plugin['name'] ),
		'description'         => wp_trim_words( $plugin['short_description'], 30, '...' ),
		'id'                  => $plugin['slug'],
		'rating'              => $plugin['rating'] / 20,
		'rating_count'        => (int) $plugin['num_ratings'],
		'active_installs'     => (int) $plugin['active_installs'],
		'author_block_rating' => $plugin['author_block_rating'] / 20,
		'author_block_count'  => (int) $plugin['author_block_count'],
		'author'              => wp_strip_all_tags( $plugin['author'] ),
		'icon'                => ( isset( $plugin['icons']['1x'] ) ? $plugin['icons']['1x'] : 'block-default' ),
		'last_updated'        => gmdate( 'Y-m-d\TH:i:s', strtotime( $plugin['last_updated'] ) ),
		'humanized_updated'   => sprintf(
			/* translators: %s: Human-readable time difference. */
			__( '%s ago' ),
			human_time_diff( strtotime( $plugin['last_updated'] ) )
		),
	);

	$this->add_additional_fields_to_object( $block, $request );

	$response = new WP_REST_Response( $block );

	if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
		$response->add_links( $this->prepare_links( $plugin ) );
	}

	return $response;
}