WordPress.org

Make WordPress Core

Changeset 42965


Ignore:
Timestamp:
04/09/2018 01:09:41 PM (6 weeks ago)
Author:
adamsilverstein
Message:

REST API: Handle api-request query parameters with plain permalinks.

When constructing the request URL, ensure that ? is replaced with & when the API root already contains a ?. Fixes an issue where requests were broken when sites had permalinks set to plain.

Props aduth.
Fixes #42382.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/js/api-request.js

    r41351 r42965  
    2323        var url = options.url;
    2424        var path = options.path;
    25         var namespaceTrimmed, endpointTrimmed;
     25        var namespaceTrimmed, endpointTrimmed, apiRoot;
    2626        var headers, addNonceHeader, headerName;
    2727
     
    3939        }
    4040        if ( typeof path === 'string' ) {
    41             url = wpApiSettings.root + path.replace( /^\//, '' );
     41            apiRoot = wpApiSettings.root;
     42            path = path.replace( /^\//, '' );
     43
     44            // API root may already include query parameter prefix if site is
     45            // configured to use plain permalinks.
     46            if ( 'string' === typeof apiRoot && -1 !== apiRoot.indexOf( '?' ) ) {
     47                path = path.replace( '?', '&' );
     48            }
     49
     50            url = apiRoot + path;
    4251        }
    4352
  • trunk/tests/qunit/wp-includes/js/api-request.js

    r41224 r42965  
    141141            assert.deepEqual( wp.apiRequest.buildAjaxOptions( {
    142142                namespace: '/wp/v2/',
    143                 endpoint: '/posts'
     143                endpoint: '/posts?orderby=title'
    144144            } ), {
    145                 url: 'http://localhost/index.php?rest_route=/wp/v2/posts',
     145                url: 'http://localhost/index.php?rest_route=/wp/v2/posts&orderby=title',
    146146                headers: nonceHeader
    147147            } );
Note: See TracChangeset for help on using the changeset viewer.