WP_REST_Server::get_indexpublicWP 4.4.0

Retrieves the site index.

This endpoint describes the capabilities of the site.

Method of the class: WP_REST_Server{}

Returns

WP_REST_Response. The API root index data.

Usage

$WP_REST_Server = new WP_REST_Server();
$WP_REST_Server->get_index( $request );
$request(WP_REST_Request) (required)
Request data.

Changelog

Since 4.4.0 Introduced.

WP_REST_Server::get_index() code WP 7.1

public function get_index( $request ) {
	// General site data.
	$available = array(
		'name'            => get_option( 'blogname' ),
		'description'     => get_option( 'blogdescription' ),
		'url'             => get_option( 'siteurl' ),
		'home'            => home_url(),
		'gmt_offset'      => get_option( 'gmt_offset' ),
		'timezone_string' => get_option( 'timezone_string' ),
		'page_for_posts'  => (int) get_option( 'page_for_posts' ),
		'page_on_front'   => (int) get_option( 'page_on_front' ),
		'show_on_front'   => get_option( 'show_on_front' ),
		'namespaces'      => array_keys( $this->namespaces ),
		'authentication'  => array(),
		'routes'          => $this->get_data_for_routes( $this->get_routes(), $request['context'] ),
	);

	// Add media processing settings for users who can upload files.
	if ( wp_is_client_side_media_processing_enabled() && current_user_can( 'upload_files' ) ) {
		// Image sizes keyed by name for client-side media processing.
		$available['image_sizes'] = array();
		foreach ( wp_get_registered_image_subsizes() as $name => $size ) {
			$available['image_sizes'][ $name ] = $size;
		}

		/** This filter is documented in wp-admin/includes/image.php */
		$available['image_size_threshold'] = (int) apply_filters( 'big_image_size_threshold', 2560, array( 0, 0 ), '', 0 );

		/** This filter is documented in wp-includes/class-wp-image-editor-imagick.php */
		$available['image_strip_meta'] = (bool) apply_filters( 'image_strip_meta', true );

		/*
		 * On the server, this filter receives the decoded image's actual bit depth.
		 * The client path never decodes the image on the server, so the filter is
		 * applied with 16 (the maximum depth the client encoder can produce) as
		 * both the value and the current depth. The client caps its output bit
		 * depth at the filtered value, so a plugin lowering it (e.g. to 8) takes
		 * effect on client-generated images too.
		 */
		/** This filter is documented in wp-includes/class-wp-image-editor-imagick.php */
		$available['image_max_bit_depth'] = (int) apply_filters( 'image_max_bit_depth', 16, 16 );
	}

	$response = new WP_REST_Response( $available );

	$fields = $request['_fields'] ?? '';
	$fields = wp_parse_list( $fields );
	if ( empty( $fields ) ) {
		$fields[] = '_links';
	}

	if ( $request->has_param( '_embed' ) ) {
		$fields[] = '_embedded';
	}

	if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
		$response->add_link( 'help', 'https://developer.wordpress.org/rest-api/' );
		$this->add_active_theme_link_to_index( $response );
		$this->add_site_logo_to_index( $response );
		$this->add_site_icon_to_index( $response );
	} else {
		if ( rest_is_field_included( 'site_logo', $fields ) ) {
			$this->add_site_logo_to_index( $response );
		}
		if ( rest_is_field_included( 'site_icon', $fields ) || rest_is_field_included( 'site_icon_url', $fields ) ) {
			$this->add_site_icon_to_index( $response );
		}
	}

	/**
	 * Filters the REST API root index data.
	 *
	 * This contains the data describing the API. This includes information
	 * about supported authentication schemes, supported namespaces, routes
	 * available on the API, and a small amount of data about the site.
	 *
	 * @since 4.4.0
	 * @since 6.0.0 Added `$request` parameter.
	 *
	 * @param WP_REST_Response $response Response data.
	 * @param WP_REST_Request  $request  Request data.
	 */
	return apply_filters( 'rest_index', $response, $request );
}