WP_REST_Post_Search_Handler::prepare_item( int $id, array $fields ): array

In this article

Prepares the search result for a given post ID.

Parameters

$idintrequired
Post ID.
$fieldsarrayrequired
Fields to include for the post.

Return

array Associative array containing fields for the post based on the $fields parameter.
  • id int
    Optional. Post ID.
  • title string
    Optional. Post title.
  • url string
    Optional. Post permalink URL.
  • type string
    Optional. Post type.

Source

public function prepare_item( $id, array $fields ) {
	$post = get_post( $id );

	$data = array();

	if ( in_array( WP_REST_Search_Controller::PROP_ID, $fields, true ) ) {
		$data[ WP_REST_Search_Controller::PROP_ID ] = (int) $post->ID;
	}

	if ( in_array( WP_REST_Search_Controller::PROP_TITLE, $fields, true ) ) {
		if ( post_type_supports( $post->post_type, 'title' ) ) {
			add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
			$data[ WP_REST_Search_Controller::PROP_TITLE ] = get_the_title( $post->ID );
			remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
		} else {
			$data[ WP_REST_Search_Controller::PROP_TITLE ] = '';
		}
	}

	if ( in_array( WP_REST_Search_Controller::PROP_URL, $fields, true ) ) {
		$data[ WP_REST_Search_Controller::PROP_URL ] = get_permalink( $post->ID );
	}

	if ( in_array( WP_REST_Search_Controller::PROP_TYPE, $fields, true ) ) {
		$data[ WP_REST_Search_Controller::PROP_TYPE ] = $this->type;
	}

	if ( in_array( WP_REST_Search_Controller::PROP_SUBTYPE, $fields, true ) ) {
		$data[ WP_REST_Search_Controller::PROP_SUBTYPE ] = $post->post_type;
	}

	return $data;
}

Changelog

VersionDescription
5.0.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.