WP_REST_Posts_Controller::prepare_links( WP_Post $post ): array

In this article

Prepares links for the request.

Parameters

$postWP_Postrequired
Post object.

Return

array Links for the given post.

Source

protected function prepare_links( $post ) {	// Entity meta.	$links = array(	'self' => array(	'href' => rest_url( rest_get_route_for_post( $post->ID ) ),	),	'collection' => array(	'href' => rest_url( rest_get_route_for_post_type_items( $this->post_type ) ),	),	'about' => array(	'href' => rest_url( 'wp/v2/types/' . $this->post_type ),	),	);	if ( ( in_array( $post->post_type, array( 'post', 'page' ), true ) || post_type_supports( $post->post_type, 'author' ) )	&& ! empty( $post->post_author ) ) {	$links['author'] = array(	'href' => rest_url( 'wp/v2/users/' . $post->post_author ),	'embeddable' => true,	);	}	if ( in_array( $post->post_type, array( 'post', 'page' ), true ) || post_type_supports( $post->post_type, 'comments' ) ) {	$replies_url = rest_url( 'wp/v2/comments' );	$replies_url = add_query_arg( 'post', $post->ID, $replies_url );	$links['replies'] = array(	'href' => $replies_url,	'embeddable' => true,	);	}	if ( in_array( $post->post_type, array( 'post', 'page' ), true ) || post_type_supports( $post->post_type, 'revisions' ) ) {	$revisions = wp_get_latest_revision_id_and_total_count( $post->ID );	$revisions_count = ! is_wp_error( $revisions ) ? $revisions['count'] : 0;	$revisions_base = sprintf( '/%s/%s/%d/revisions', $this->namespace, $this->rest_base, $post->ID );	$links['version-history'] = array(	'href' => rest_url( $revisions_base ),	'count' => $revisions_count,	);	if ( $revisions_count > 0 ) {	$links['predecessor-version'] = array(	'href' => rest_url( $revisions_base . '/' . $revisions['latest_id'] ),	'id' => $revisions['latest_id'],	);	}	}	$post_type_obj = get_post_type_object( $post->post_type );	if ( $post_type_obj->hierarchical && ! empty( $post->post_parent ) ) {	$links['up'] = array(	'href' => rest_url( rest_get_route_for_post( $post->post_parent ) ),	'embeddable' => true,	);	}	// If we have a featured media, add that.	$featured_media = get_post_thumbnail_id( $post->ID );	if ( $featured_media ) {	$image_url = rest_url( rest_get_route_for_post( $featured_media ) );	$links['https://api.w.org/featuredmedia'] = array(	'href' => $image_url,	'embeddable' => true,	);	}	if ( ! in_array( $post->post_type, array( 'attachment', 'nav_menu_item', 'revision' ), true ) ) {	$attachments_url = rest_url( rest_get_route_for_post_type_items( 'attachment' ) );	$attachments_url = add_query_arg( 'parent', $post->ID, $attachments_url );	$links['https://api.w.org/attachment'] = array(	'href' => $attachments_url,	);	}	$taxonomies = get_object_taxonomies( $post->post_type );	if ( ! empty( $taxonomies ) ) {	$links['https://api.w.org/term'] = array();	foreach ( $taxonomies as $tax ) {	$taxonomy_route = rest_get_route_for_taxonomy_items( $tax );	// Skip taxonomies that are not public.	if ( empty( $taxonomy_route ) ) {	continue;	}	$terms_url = add_query_arg(	'post',	$post->ID,	rest_url( $taxonomy_route )	);	$links['https://api.w.org/term'][] = array(	'href' => $terms_url,	'taxonomy' => $tax,	'embeddable' => true,	);	}	}	return $links; } 

Changelog

VersionDescription
4.7.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.