Make WordPress Core

Ticket #34729: 34729.diff

File 34729.diff, 2.0 KB (added by joehoyle, 9 years ago)
  • src/wp-includes/rest-api/class-wp-rest-response.php

    diff --git a/src/wp-includes/rest-api/class-wp-rest-response.php b/src/wp-includes/rest-api/class-wp-rest-response.php
    index db80029..af50c0c 100644
    a b class WP_REST_Response extends WP_HTTP_Response { 
    256256
    257257                return $error;
    258258        }
     259
     260        /**
     261         * Get the CURIEs (compact URIs) used for relations.
     262         *
     263         * @return array
     264         */
     265        public function get_curies() {
     266                return array(
     267                        array(
     268                                'name' => 'wp',
     269                                'href' => 'https://api.w.org/',
     270                        ),
     271                );
     272        }
    259273}
  • src/wp-includes/rest-api/class-wp-rest-server.php

    diff --git a/src/wp-includes/rest-api/class-wp-rest-server.php b/src/wp-includes/rest-api/class-wp-rest-server.php
    index dad4070..e84acbe 100644
    a b class WP_REST_Server { 
    460460
    461461                // Convert links to part of the data.
    462462                $data = array();
     463                $curies = $response->get_curies();
     464                $used_curies = array();
     465
    463466                foreach ( $links as $rel => $items ) {
    464467                        $data[ $rel ] = array();
    465468
     469                        $matched_curi = null;
     470
     471                        // Convert $rel URIs to their compact versions if they exist.
     472                        foreach ( $curies as $curi ) {
     473                                if ( strpos( $rel, $curi['href'] ) === 0 ) {
     474                                        $matched_curi = $curi;
     475                                        $used_curies[ $curi['name'] ] = array(
     476                                                'name'      => $curi['name'],
     477                                                'href'      => $curi['href'] . '{rel}',
     478                                                'templated' => true,
     479                                        );
     480
     481                                        // Relation now changes from '$uri' to '$curie:$relation'
     482                                        $rel = $curi['name'] . ':' . substr( $rel, strlen( $curi['href'] ) );
     483                                        break;
     484                                }
     485                        }
    466486                        foreach ( $items as $item ) {
    467487                                $attributes = $item['attributes'];
    468488                                $attributes['href'] = $item['href'];
    class WP_REST_Server { 
    470490                        }
    471491                }
    472492
     493                // Push the curies onto the start of the links array.
     494                if ( $used_curies ) {
     495                        $data = array_merge( array( 'curies' => array_values( $used_curies ) ), $data );
     496                }
     497
    473498                return $data;
    474499        }
    475500