Make WordPress Core

Changeset 30383


Ignore:
Timestamp:
11/19/2014 01:52:57 AM (12 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.