WP_REST_Posts_Controller::get_schema_links()protectedWP 4.9.8

Retrieves Link Description Objects that should be added to the Schema for the posts collection.

Method of the class: WP_REST_Posts_Controller{}

No Hooks.

Return

Array.

Usage

// protected - for code of main (parent) or child class
$result = $this->get_schema_links();

Changelog

Since 4.9.8 Introduced.

WP_REST_Posts_Controller::get_schema_links() code WP 6.6.2

protected function get_schema_links() {

	$href = rest_url( "{$this->namespace}/{$this->rest_base}/{id}" );

	$links = array();

	if ( 'attachment' !== $this->post_type ) {
		$links[] = array(
			'rel'          => 'https://api.w.org/action-publish',
			'title'        => __( 'The current user can publish this post.' ),
			'href'         => $href,
			'targetSchema' => array(
				'type'       => 'object',
				'properties' => array(
					'status' => array(
						'type' => 'string',
						'enum' => array( 'publish', 'future' ),
					),
				),
			),
		);
	}

	$links[] = array(
		'rel'          => 'https://api.w.org/action-unfiltered-html',
		'title'        => __( 'The current user can post unfiltered HTML markup and JavaScript.' ),
		'href'         => $href,
		'targetSchema' => array(
			'type'       => 'object',
			'properties' => array(
				'content' => array(
					'raw' => array(
						'type' => 'string',
					),
				),
			),
		),
	);

	if ( 'post' === $this->post_type ) {
		$links[] = array(
			'rel'          => 'https://api.w.org/action-sticky',
			'title'        => __( 'The current user can sticky this post.' ),
			'href'         => $href,
			'targetSchema' => array(
				'type'       => 'object',
				'properties' => array(
					'sticky' => array(
						'type' => 'boolean',
					),
				),
			),
		);
	}

	if ( post_type_supports( $this->post_type, 'author' ) ) {
		$links[] = array(
			'rel'          => 'https://api.w.org/action-assign-author',
			'title'        => __( 'The current user can change the author on this post.' ),
			'href'         => $href,
			'targetSchema' => array(
				'type'       => 'object',
				'properties' => array(
					'author' => array(
						'type' => 'integer',
					),
				),
			),
		);
	}

	$taxonomies = wp_list_filter( get_object_taxonomies( $this->post_type, 'objects' ), array( 'show_in_rest' => true ) );

	foreach ( $taxonomies as $tax ) {
		$tax_base = ! empty( $tax->rest_base ) ? $tax->rest_base : $tax->name;

		/* translators: %s: Taxonomy name. */
		$assign_title = sprintf( __( 'The current user can assign terms in the %s taxonomy.' ), $tax->name );
		/* translators: %s: Taxonomy name. */
		$create_title = sprintf( __( 'The current user can create terms in the %s taxonomy.' ), $tax->name );

		$links[] = array(
			'rel'          => 'https://api.w.org/action-assign-' . $tax_base,
			'title'        => $assign_title,
			'href'         => $href,
			'targetSchema' => array(
				'type'       => 'object',
				'properties' => array(
					$tax_base => array(
						'type'  => 'array',
						'items' => array(
							'type' => 'integer',
						),
					),
				),
			),
		);

		$links[] = array(
			'rel'          => 'https://api.w.org/action-create-' . $tax_base,
			'title'        => $create_title,
			'href'         => $href,
			'targetSchema' => array(
				'type'       => 'object',
				'properties' => array(
					$tax_base => array(
						'type'  => 'array',
						'items' => array(
							'type' => 'integer',
						),
					),
				),
			),
		);
	}

	return $links;
}