WP_REST_Comments_Controller::get_item_schema()publicWP 4.7.0

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

Method of the class: WP_REST_Comments_Controller{}

No Hooks.

Return

Array.

Usage

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

Changelog

Since 4.7.0 Introduced.

WP_REST_Comments_Controller::get_item_schema() code WP 6.5.2

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

	$schema = array(
		'$schema'    => 'http://json-schema.org/draft-04/schema#',
		'title'      => 'comment',
		'type'       => 'object',
		'properties' => array(
			'id'                => array(
				'description' => __( 'Unique identifier for the comment.' ),
				'type'        => 'integer',
				'context'     => array( 'view', 'edit', 'embed' ),
				'readonly'    => true,
			),
			'author'            => array(
				'description' => __( 'The ID of the user object, if author was a user.' ),
				'type'        => 'integer',
				'context'     => array( 'view', 'edit', 'embed' ),
			),
			'author_email'      => array(
				'description' => __( 'Email address for the comment author.' ),
				'type'        => 'string',
				'format'      => 'email',
				'context'     => array( 'edit' ),
				'arg_options' => array(
					'sanitize_callback' => array( $this, 'check_comment_author_email' ),
					'validate_callback' => null, // Skip built-in validation of 'email'.
				),
			),
			'author_ip'         => array(
				'description' => __( 'IP address for the comment author.' ),
				'type'        => 'string',
				'format'      => 'ip',
				'context'     => array( 'edit' ),
			),
			'author_name'       => array(
				'description' => __( 'Display name for the comment author.' ),
				'type'        => 'string',
				'context'     => array( 'view', 'edit', 'embed' ),
				'arg_options' => array(
					'sanitize_callback' => 'sanitize_text_field',
				),
			),
			'author_url'        => array(
				'description' => __( 'URL for the comment author.' ),
				'type'        => 'string',
				'format'      => 'uri',
				'context'     => array( 'view', 'edit', 'embed' ),
			),
			'author_user_agent' => array(
				'description' => __( 'User agent for the comment author.' ),
				'type'        => 'string',
				'context'     => array( 'edit' ),
				'arg_options' => array(
					'sanitize_callback' => 'sanitize_text_field',
				),
			),
			'content'           => array(
				'description' => __( 'The content for the comment.' ),
				'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' => __( 'Content for the comment, as it exists in the database.' ),
						'type'        => 'string',
						'context'     => array( 'edit' ),
					),
					'rendered' => array(
						'description' => __( 'HTML content for the comment, transformed for display.' ),
						'type'        => 'string',
						'context'     => array( 'view', 'edit', 'embed' ),
						'readonly'    => true,
					),
				),
			),
			'date'              => array(
				'description' => __( "The date the comment was published, in the site's timezone." ),
				'type'        => 'string',
				'format'      => 'date-time',
				'context'     => array( 'view', 'edit', 'embed' ),
			),
			'date_gmt'          => array(
				'description' => __( 'The date the comment was published, as GMT.' ),
				'type'        => 'string',
				'format'      => 'date-time',
				'context'     => array( 'view', 'edit' ),
			),
			'link'              => array(
				'description' => __( 'URL to the comment.' ),
				'type'        => 'string',
				'format'      => 'uri',
				'context'     => array( 'view', 'edit', 'embed' ),
				'readonly'    => true,
			),
			'parent'            => array(
				'description' => __( 'The ID for the parent of the comment.' ),
				'type'        => 'integer',
				'context'     => array( 'view', 'edit', 'embed' ),
				'default'     => 0,
			),
			'post'              => array(
				'description' => __( 'The ID of the associated post object.' ),
				'type'        => 'integer',
				'context'     => array( 'view', 'edit' ),
				'default'     => 0,
			),
			'status'            => array(
				'description' => __( 'State of the comment.' ),
				'type'        => 'string',
				'context'     => array( 'view', 'edit' ),
				'arg_options' => array(
					'sanitize_callback' => 'sanitize_key',
				),
			),
			'type'              => array(
				'description' => __( 'Type of the comment.' ),
				'type'        => 'string',
				'context'     => array( 'view', 'edit', 'embed' ),
				'readonly'    => true,
			),
		),
	);

	if ( get_option( 'show_avatars' ) ) {
		$avatar_properties = array();

		$avatar_sizes = rest_get_avatar_sizes();

		foreach ( $avatar_sizes as $size ) {
			$avatar_properties[ $size ] = array(
				/* translators: %d: Avatar image size in pixels. */
				'description' => sprintf( __( 'Avatar URL with image size of %d pixels.' ), $size ),
				'type'        => 'string',
				'format'      => 'uri',
				'context'     => array( 'embed', 'view', 'edit' ),
			);
		}

		$schema['properties']['author_avatar_urls'] = array(
			'description' => __( 'Avatar URLs for the comment author.' ),
			'type'        => 'object',
			'context'     => array( 'view', 'edit', 'embed' ),
			'readonly'    => true,
			'properties'  => $avatar_properties,
		);
	}

	$schema['properties']['meta'] = $this->meta->get_field_schema();

	$this->schema = $schema;

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