WP_REST_Server::embed_links( array $data, bool|string[] $embed = true )
Embeds the links from the data into the request.
Parameters
- $data
-
(array) (Required) Data from the request.
- $embed
-
(bool|string[]) (Optional) Whether to embed all links or a filtered list of link relations.
Default value: true
Return
(array) Data with sub-requests embedded.
-
'_links'
(array) Links. -
'_embedded'
(array) Embedded objects.
Source
File: wp-includes/rest-api/class-wp-rest-server.php
protected function embed_links( $data, $embed = true ) { if ( empty( $data['_links'] ) ) { return $data; } $embedded = array(); foreach ( $data['_links'] as $rel => $links ) { // If a list of relations was specified, and the link relation // is not in the list of allowed relations, don't process the link. if ( is_array( $embed ) && ! in_array( $rel, $embed, true ) ) { continue; } $embeds = array(); foreach ( $links as $item ) { // Determine if the link is embeddable. if ( empty( $item['embeddable'] ) ) { // Ensure we keep the same order. $embeds[] = array(); continue; } if ( ! array_key_exists( $item['href'], $this->embed_cache ) ) { // Run through our internal routing and serve. $request = WP_REST_Request::from_url( $item['href'] ); if ( ! $request ) { $embeds[] = array(); continue; } // Embedded resources get passed context=embed. if ( empty( $request['context'] ) ) { $request['context'] = 'embed'; } $response = $this->dispatch( $request ); /** This filter is documented in wp-includes/rest-api/class-wp-rest-server.php */ $response = apply_filters( 'rest_post_dispatch', rest_ensure_response( $response ), $this, $request ); $this->embed_cache[ $item['href'] ] = $this->response_to_data( $response, false ); } $embeds[] = $this->embed_cache[ $item['href'] ]; } // Determine if any real links were found. $has_links = count( array_filter( $embeds ) ); if ( $has_links ) { $embedded[ $rel ] = $embeds; } } if ( ! empty( $embedded ) ) { $data['_embedded'] = $embedded; } return $data; }
Changelog
Version | Description |
---|---|
5.4.0 | The $embed parameter can now contain a list of link relations to include. |
4.4.0 | Introduced. |
© 2003–2021 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/classes/wp_rest_server/embed_links