WP_REST_Server::embed_links()
Embeds the links from the data into the request.
Метод класса: WP_REST_Server{}
Хуки из метода
Возвращает
Массив
. Data with sub-requests embedded.
Использование
// protected - в коде основоного (родительского) или дочернего класса $result = $this->embed_links( $data, $embed );
- $data(массив) (обязательный)
- Data from the request.
- $embed(true|false|string[])
- Whether to embed all links or a filtered list of link relations.
По умолчанию: true
Список изменений
С версии 4.4.0 | Введена. |
С версии 5.4.0 | The $embed parameter can now contain a list of link relations to include. |
Код WP_REST_Server::embed_links() WP REST Server::embed links WP 6.2.2
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; }