WP_REST_Terms_Controller::prepare_links()protectedWP 4.7.0

Prepares links for the request.

Method of the class: WP_REST_Terms_Controller{}

No Hooks.

Return

Array. Links for the given term.

Usage

// protected - for code of main (parent) or child class
$result = $this->prepare_links( $term );
$term(WP_Term) (required)
Term object.

Changelog

Since 4.7.0 Introduced.

WP_REST_Terms_Controller::prepare_links() code WP 6.6.2

protected function prepare_links( $term ) {
	$links = array(
		'self'       => array(
			'href' => rest_url( rest_get_route_for_term( $term ) ),
		),
		'collection' => array(
			'href' => rest_url( rest_get_route_for_taxonomy_items( $this->taxonomy ) ),
		),
		'about'      => array(
			'href' => rest_url( sprintf( 'wp/v2/taxonomies/%s', $this->taxonomy ) ),
		),
	);

	if ( $term->parent ) {
		$parent_term = get_term( (int) $term->parent, $term->taxonomy );

		if ( $parent_term ) {
			$links['up'] = array(
				'href'       => rest_url( rest_get_route_for_term( $parent_term ) ),
				'embeddable' => true,
			);
		}
	}

	$taxonomy_obj = get_taxonomy( $term->taxonomy );

	if ( empty( $taxonomy_obj->object_type ) ) {
		return $links;
	}

	$post_type_links = array();

	foreach ( $taxonomy_obj->object_type as $type ) {
		$rest_path = rest_get_route_for_post_type_items( $type );

		if ( empty( $rest_path ) ) {
			continue;
		}

		$post_type_links[] = array(
			'href' => add_query_arg( $this->rest_base, $term->term_id, rest_url( $rest_path ) ),
		);
	}

	if ( ! empty( $post_type_links ) ) {
		$links['https://api.w.org/post_type'] = $post_type_links;
	}

	return $links;
}