Пример #1
0
 /**
  * Retrieves links from a response.
  *
  * Extracts the links from a response into a structured hash, suitable for
  * direct output.
  *
  * @since 4.4.0
  * @access public
  * @static
  *
  * @param WP_REST_Response $response Response to extract links from.
  * @return array Map of link relation to list of link hashes.
  */
 public static function get_response_links($response)
 {
     $links = $response->get_links();
     if (empty($links)) {
         return array();
     }
     // Convert links to part of the data.
     $data = array();
     $curies = $response->get_curies();
     $used_curies = array();
     foreach ($links as $rel => $items) {
         // Convert $rel URIs to their compact versions if they exist.
         foreach ($curies as $curie) {
             $href_prefix = substr($curie['href'], 0, strpos($curie['href'], '{rel}'));
             if (strpos($rel, $href_prefix) !== 0) {
                 continue;
             }
             $used_curies[$curie['name']] = $curie;
             // Relation now changes from '$uri' to '$curie:$relation'
             $rel_regex = str_replace('\\{rel\\}', '([\\w]+)', preg_quote($curie['href'], '!'));
             preg_match('!' . $rel_regex . '!', $rel, $matches);
             if ($matches) {
                 $rel = $curie['name'] . ':' . $matches[1];
             }
             break;
         }
         $data[$rel] = array();
         foreach ($items as $item) {
             $attributes = $item['attributes'];
             $attributes['href'] = $item['href'];
             $data[$rel][] = $attributes;
         }
     }
     // Push the curies onto the start of the links array.
     if ($used_curies) {
         $data = array_merge(array('curies' => array_values($used_curies)), $data);
     }
     return $data;
 }