WP_REST_Global_Styles_Controller::prepare_item_for_response()publicWP 5.9.0

Prepare a global styles config output for response.

Метод класса: WP_REST_Global_Styles_Controller{}

Хуков нет.

Возвращает

WP_REST_Response. Response object.

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

$WP_REST_Global_Styles_Controller = new WP_REST_Global_Styles_Controller();
$WP_REST_Global_Styles_Controller->prepare_item_for_response( $post, $request );
$post(WP_Post) (обязательный)
Global Styles post object.
$request(WP_REST_Request) (обязательный)
Request object.

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

С версии 5.9.0 Введена.
С версии 6.6.0 Added custom relative theme file URIs to _links.

Код WP_REST_Global_Styles_Controller::prepare_item_for_response() WP 6.7.1

public function prepare_item_for_response( $post, $request ) {
	$raw_config                       = json_decode( $post->post_content, true );
	$is_global_styles_user_theme_json = isset( $raw_config['isGlobalStylesUserThemeJSON'] ) && true === $raw_config['isGlobalStylesUserThemeJSON'];
	$config                           = array();
	$theme_json                       = null;
	if ( $is_global_styles_user_theme_json ) {
		$theme_json = new WP_Theme_JSON( $raw_config, 'custom' );
		$config     = $theme_json->get_raw_data();
	}

	// Base fields for every post.
	$fields = $this->get_fields_for_response( $request );
	$data   = array();

	if ( rest_is_field_included( 'id', $fields ) ) {
		$data['id'] = $post->ID;
	}

	if ( rest_is_field_included( 'title', $fields ) ) {
		$data['title'] = array();
	}
	if ( rest_is_field_included( 'title.raw', $fields ) ) {
		$data['title']['raw'] = $post->post_title;
	}
	if ( rest_is_field_included( 'title.rendered', $fields ) ) {
		add_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
		add_filter( 'private_title_format', array( $this, 'protected_title_format' ) );

		$data['title']['rendered'] = get_the_title( $post->ID );

		remove_filter( 'protected_title_format', array( $this, 'protected_title_format' ) );
		remove_filter( 'private_title_format', array( $this, 'protected_title_format' ) );
	}

	if ( rest_is_field_included( 'settings', $fields ) ) {
		$data['settings'] = ! empty( $config['settings'] ) && $is_global_styles_user_theme_json ? $config['settings'] : new stdClass();
	}

	if ( rest_is_field_included( 'styles', $fields ) ) {
		$data['styles'] = ! empty( $config['styles'] ) && $is_global_styles_user_theme_json ? $config['styles'] : new stdClass();
	}

	$context = ! empty( $request['context'] ) ? $request['context'] : 'view';
	$data    = $this->add_additional_fields_to_object( $data, $request );
	$data    = $this->filter_response_by_context( $data, $context );

	// Wrap the data in a response object.
	$response = rest_ensure_response( $data );

	if ( rest_is_field_included( '_links', $fields ) || rest_is_field_included( '_embedded', $fields ) ) {
		$links = $this->prepare_links( $post->ID );

		// Only return resolved URIs for get requests to user theme JSON.
		if ( $theme_json ) {
			$resolved_theme_uris = WP_Theme_JSON_Resolver::get_resolved_theme_uris( $theme_json );
			if ( ! empty( $resolved_theme_uris ) ) {
				$links['https://api.w.org/theme-file'] = $resolved_theme_uris;
			}
		}

		$response->add_links( $links );
		if ( ! empty( $links['self']['href'] ) ) {
			$actions = $this->get_available_actions( $post, $request );
			$self    = $links['self']['href'];
			foreach ( $actions as $rel ) {
				$response->add_link( $rel, $self );
			}
		}
	}

	return $response;
}