Make WordPress Core

Changeset 42250 for trunk


Ignore:
Timestamp:
11/28/2017 07:09:43 AM (9 years ago)
Author:
rmccue
Message:

REST API: Ensure rest_url() consistently has leading slash.

rest_url() inconsistent addes slashes to the passed path depending on whether the site has pretty permalinks enabled. Apart from being inconsistent, this also caused the unit tests to fail when pretty permalinks are enabled.

Props frank-klein.
Fixes #42452. See #41451.

Location:
trunk
Files:
2 edited

Legend:

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

    r42000 r42250  
    308308        }
    309309
     310        $path = '/' . ltrim( $path, '/' );
     311
    310312        if ( is_multisite() && get_blog_option( $blog_id, 'permalink_structure' ) || get_option( 'permalink_structure' ) ) {
    311313                global $wp_rewrite;
     
    317319                }
    318320
    319                 $url .= '/' . ltrim( $path, '/' );
     321                $url .= $path;
    320322        } else {
    321323                $url = trailingslashit( get_home_url( $blog_id, '', $scheme ) );
     
    325327                        $url .= 'index.php';
    326328                }
    327 
    328                 $path = '/' . ltrim( $path, '/' );
    329329
    330330                $url = add_query_arg( 'rest_route', $path, $url );
  • trunk/tests/phpunit/tests/rest-api.php

    r41744 r42250  
    487487                set_current_screen( 'front' );
    488488
     489        }
     490
     491        /**
     492         * @ticket 42452
     493         */
     494        public function test_always_prepend_path_with_slash_in_rest_url_filter() {
     495                $filter = new MockAction();
     496                add_filter( 'rest_url', array( $filter, 'filter' ), 10, 2 );
     497
     498                // Passing no path should return a slash.
     499                get_rest_url();
     500                $args = $filter->get_args();
     501                $this->assertEquals( '/', $args[0][1] );
     502                $filter->reset();
     503
     504                // Paths without a prepended slash should have one added.
     505                get_rest_url( null, 'wp/media/' );
     506                $args = $filter->get_args();
     507                $this->assertEquals( '/wp/media/', $args[0][1] );
     508                $filter->reset();
     509
     510                // Do not modify paths with a prepended slash.
     511                get_rest_url( null, '/wp/media/' );
     512                $args = $filter->get_args();
     513                $this->assertEquals( '/wp/media/', $args[0][1] );
     514
     515                unset( $filter );
    489516        }
    490517
Note: See TracChangeset for help on using the changeset viewer.