WP_REST_Server::embed_links PHP Method

    protected function embed_links($data)
    {
        if (empty($data['_links'])) {
            return $data;
        }
        $embedded = array();
        foreach ($data['_links'] as $rel => $links) {
            // Ignore links to self, for obvious reasons.
            if ('self' === $rel) {
                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;
                }
                // 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);
                $embeds[] = $this->response_to_data($response, false);
            }
            // 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;
    }