WP_REST_Server::embed_links() protected WP 4.4.0
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/строка[])
- Whether to embed all links or a filtered list of link relations.
Список изменений
С версии 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 5.6.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;
}