Make WordPress Core

Changeset 30383


Ignore:
Timestamp:
11/19/2014 01:52:57 AM (10 years ago)
Author:
boonebgorges
Message:

Improvements to wp_make_link_relative().

  • Support relative URL input.
  • When the URL being made relative has another URL as a parameter, don't make the second URL relative.

Props voldemortensen.
Fixes #30373.

Location:
trunk
Files:
2 edited

Legend:

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

    r30105 r30383  
    32403240 */
    32413241function wp_make_link_relative( $link ) {
    3242     return preg_replace( '|https?://[^/]+(/.*)|i', '$1', $link );
     3242    return preg_replace( '|^(https?:)?//[^/]+(/.*)|i', '$2', $link );
    32433243}
    32443244
  • trunk/tests/phpunit/tests/link.php

    r30263 r30383  
    257257        $this->assertEmpty( get_adjacent_post( false, array(), false ) );
    258258    }
     259
     260    public function test_wp_make_link_relative_with_http_scheme() {
     261        $link = 'http://example.com/this-is-a-test-http-url/';
     262        $relative_link = wp_make_link_relative( $link );
     263        $this->assertEquals( '/this-is-a-test-http-url/', $relative_link );
     264    }
     265
     266    public function test_wp_make_link_relative_with_https_scheme() {
     267        $link = 'https://example.com/this-is-a-test-https-url/';
     268        $relative_link = wp_make_link_relative( $link );
     269        $this->assertEquals( '/this-is-a-test-https-url/', $relative_link );
     270    }
     271
     272    /**
     273     * @ticket 30373
     274     */
     275    public function test_wp_make_link_relative_with_no_scheme() {
     276        $link = '//example.com/this-is-a-test-schemeless-url/';
     277        $relative_link = wp_make_link_relative( $link );
     278        $this->assertEquals( '/this-is-a-test-schemeless-url/', $relative_link );
     279    }
     280
     281    /**
     282     * @ticket 30373
     283     */
     284    public function test_wp_make_link_relative_should_retain_URL_param_that_is_also_a_URL() {
     285        $link = 'https://example.com/this-is-a-test/?redirect=https://example.org/a-different-test-post/';
     286        $relative_link = wp_make_link_relative( $link );
     287        $this->assertEquals( '/this-is-a-test/?redirect=https://example.org/a-different-test-post/', $relative_link );
     288    }
    259289}
Note: See TracChangeset for help on using the changeset viewer.