Make WordPress Core

Changeset 36674


Ignore:
Timestamp:
02/24/2016 04:19:44 AM (9 years ago)
Author:
rmccue
Message:

REST API: Use WP_REST_Request::from_url() when embedding.

See #35803.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/rest-api/class-wp-rest-server.php

    r36576 r36674  
    533533            foreach ( $links as $item ) {
    534534                // Determine if the link is embeddable.
    535                 if ( empty( $item['embeddable'] ) || strpos( $item['href'], $api_root ) !== 0 ) {
     535                if ( empty( $item['embeddable'] ) ) {
    536536                    // Ensure we keep the same order.
    537537                    $embeds[] = array();
     
    540540
    541541                // Run through our internal routing and serve.
    542                 $route = substr( $item['href'], strlen( untrailingslashit( $api_root ) ) );
    543                 $query_params = array();
    544 
    545                 // Parse out URL query parameters.
    546                 $parsed = parse_url( $route );
    547                 if ( empty( $parsed['path'] ) ) {
     542                $request = WP_REST_Request::from_url( $item['href'] );
     543                if ( ! $request ) {
    548544                    $embeds[] = array();
    549545                    continue;
    550546                }
    551547
    552                 if ( ! empty( $parsed['query'] ) ) {
    553                     parse_str( $parsed['query'], $query_params );
    554 
    555                     // Ensure magic quotes are stripped.
    556                     if ( get_magic_quotes_gpc() ) {
    557                         $query_params = stripslashes_deep( $query_params );
    558                     }
    559                 }
    560 
    561548                // Embedded resources get passed context=embed.
    562                 if ( empty( $query_params['context'] ) ) {
    563                     $query_params['context'] = 'embed';
    564                 }
    565 
    566                 $request = new WP_REST_Request( 'GET', $parsed['path'] );
    567 
    568                 $request->set_query_params( $query_params );
     549                if ( empty( $request['context'] ) ) {
     550                    $request['context'] = 'embed';
     551                }
     552
    569553                $response = $this->dispatch( $request );
    570554
  • trunk/tests/phpunit/tests/rest-api/rest-server.php

    r36535 r36674  
    493493
    494494        $response = new WP_REST_Response();
    495         $response->add_link( 'alternate', rest_url( '/test/embeddable?parsed_params=yes' ), array( 'embeddable' => true ) );
     495        $url = rest_url( '/test/embeddable' );
     496        $url = add_query_arg( 'parsed_params', 'yes', $url );
     497        $response->add_link( 'alternate', $url, array( 'embeddable' => true ) );
    496498
    497499        $data = $this->server->response_to_data( $response, true );
     
    515517
    516518        $response = new WP_REST_Response();
    517         $response->add_link( 'up', rest_url( '/test/embeddable?error=1' ), array( 'embeddable' => true ) );
     519        $url = rest_url( '/test/embeddable' );
     520        $url = add_query_arg( 'error', '1', $url );
     521        $response->add_link( 'up', $url, array( 'embeddable' => true ) );
    518522
    519523        $data = $this->server->response_to_data( $response, true );
Note: See TracChangeset for help on using the changeset viewer.