WP_REST_Attachments_Controller::get_item_schemapublicWP 4.7.0

Retrieves the attachment's schema, conforming to JSON Schema.

Method of the class: WP_REST_Attachments_Controller{}

No Hooks.

Returns

array. Item schema as an array.

Usage

$WP_REST_Attachments_Controller = new WP_REST_Attachments_Controller();
$WP_REST_Attachments_Controller->get_item_schema();

Changelog

Since 4.7.0 Introduced.

WP_REST_Attachments_Controller::get_item_schema() code WP 7.1

public function get_item_schema() {
	if ( $this->schema ) {
		return $this->add_additional_fields_schema( $this->schema );
	}

	$schema = parent::get_item_schema();

	$schema['properties']['alt_text'] = array(
		'description' => __( 'Alternative text to display when attachment is not displayed.' ),
		'type'        => 'string',
		'context'     => array( 'view', 'edit', 'embed' ),
		'arg_options' => array(
			'sanitize_callback' => 'sanitize_text_field',
		),
	);

	$schema['properties']['caption'] = array(
		'description' => __( 'The attachment caption.' ),
		'type'        => 'object',
		'context'     => array( 'view', 'edit', 'embed' ),
		'arg_options' => array(
			'sanitize_callback' => null, // Note: sanitization implemented in self::prepare_item_for_database().
			'validate_callback' => null, // Note: validation implemented in self::prepare_item_for_database().
		),
		'properties'  => array(
			'raw'      => array(
				'description' => __( 'Caption for the attachment, as it exists in the database.' ),
				'type'        => 'string',
				'context'     => array( 'edit' ),
			),
			'rendered' => array(
				'description' => __( 'HTML caption for the attachment, transformed for display.' ),
				'type'        => 'string',
				'context'     => array( 'view', 'edit', 'embed' ),
				'readonly'    => true,
			),
		),
	);

	$schema['properties']['description'] = array(
		'description' => __( 'The attachment description.' ),
		'type'        => 'object',
		'context'     => array( 'view', 'edit' ),
		'arg_options' => array(
			'sanitize_callback' => null, // Note: sanitization implemented in self::prepare_item_for_database().
			'validate_callback' => null, // Note: validation implemented in self::prepare_item_for_database().
		),
		'properties'  => array(
			'raw'      => array(
				'description' => __( 'Description for the attachment, as it exists in the database.' ),
				'type'        => 'string',
				'context'     => array( 'edit' ),
			),
			'rendered' => array(
				'description' => __( 'HTML description for the attachment, transformed for display.' ),
				'type'        => 'string',
				'context'     => array( 'view', 'edit' ),
				'readonly'    => true,
			),
		),
	);

	$schema['properties']['media_type'] = array(
		'description' => __( 'Attachment type.' ),
		'type'        => 'string',
		'enum'        => array( 'image', 'file' ),
		'context'     => array( 'view', 'edit', 'embed' ),
		'readonly'    => true,
	);

	$schema['properties']['mime_type'] = array(
		'description' => __( 'The attachment MIME type.' ),
		'type'        => 'string',
		'context'     => array( 'view', 'edit', 'embed' ),
		'readonly'    => true,
	);

	$schema['properties']['media_details'] = array(
		'description' => __( 'Details about the media file, specific to its type.' ),
		'type'        => 'object',
		'context'     => array( 'view', 'edit', 'embed' ),
		'readonly'    => true,
	);

	$schema['properties']['post'] = array(
		'description' => __( 'The ID for the associated post of the attachment.' ),
		'type'        => 'integer',
		'context'     => array( 'view', 'edit' ),
	);

	$schema['properties']['source_url'] = array(
		'description' => __( 'URL to the original attachment file.' ),
		'type'        => 'string',
		'format'      => 'uri',
		'context'     => array( 'view', 'edit', 'embed' ),
		'readonly'    => true,
	);

	$schema['properties']['missing_image_sizes'] = array(
		'description' => __( 'List of the missing image sizes of the attachment.' ),
		'type'        => 'array',
		'items'       => array( 'type' => 'string' ),
		'context'     => array( 'edit' ),
		'readonly'    => true,
	);

	$schema['properties']['filename'] = array(
		'description' => __( 'Original attachment file name.' ),
		'type'        => 'string',
		'context'     => array( 'view', 'edit' ),
		'readonly'    => true,
	);

	$schema['properties']['filesize'] = array(
		'description' => __( 'Attachment file size in bytes.' ),
		'type'        => array( 'integer', 'null' ),
		'context'     => array( 'view', 'edit' ),
		'readonly'    => true,
	);

	$schema['properties']['exif_orientation'] = array(
		'description' => __( 'EXIF orientation value. Values 1-8 follow the EXIF specification, where 1 means no rotation needed.' ),
		'type'        => 'integer',
		'context'     => array( 'edit' ),
		'readonly'    => true,
	);

	// Enumerate the registered sub-sizes so the schema documents exactly which
	// keys may appear under "sizes".
	$size_quality_properties = array();
	foreach ( array_keys( wp_get_registered_image_subsizes() ) as $size_name ) {
		$size_quality_properties[ $size_name ] = array(
			'type'    => 'integer',
			'minimum' => 1,
			'maximum' => 100,
		);
	}

	$schema['properties']['image_quality'] = array(
		'description' => __( 'Encode quality (1-100) from the wp_editor_set_quality filter, resolved against the output MIME type. The "default" value applies to the full-size image; "sizes" lists per-registered-size overrides where the filtered value differs from "default".' ),
		'type'        => 'object',
		'context'     => array( 'edit' ),
		'readonly'    => true,
		'properties'  => array(
			'default' => array(
				'type'    => 'integer',
				'minimum' => 1,
				'maximum' => 100,
			),
			'sizes'   => array(
				'type'       => 'object',
				'properties' => $size_quality_properties,
			),
		),
	);

	$schema['properties']['image_output_format'] = array(
		'description' => __( 'The output MIME type this image should be converted to, based on the image_editor_output_format filter. Null if no conversion is needed.' ),
		'type'        => array( 'string', 'null' ),
		'context'     => array( 'edit' ),
		'readonly'    => true,
	);

	$schema['properties']['image_save_progressive'] = array(
		'description' => __( 'Whether to use progressive/interlaced encoding when saving this image.' ),
		'type'        => 'boolean',
		'context'     => array( 'edit' ),
		'readonly'    => true,
	);

	unset( $schema['properties']['password'] );

	$this->schema = $schema;

	return $this->add_additional_fields_schema( $this->schema );
}