From b8f97013df4fb461c72ebf7d0b5166bac15a526b Mon Sep 17 00:00:00 2001 From: Jb Audras Date: Tue, 8 Feb 2022 23:39:32 +0000 Subject: [PATCH] Script Loader: Prevent normalizing HTML IDs in `_wp_normalize_relative_css_links()`. This change fixes an issue where `_wp_normalize_relative_css_links()` was not only matching urls, but also HTML IDs. Follow-up to [52036]. Props mahype, costdev, audrasjb, SergeyBiryukov. Fixes #54922. git-svn-id: https://develop.svn.wordpress.org/trunk@52695 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/script-loader.php | 5 +++++ tests/phpunit/tests/dependencies/styles.php | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php index bc52a5f907..d351a502d6 100644 --- a/src/wp-includes/script-loader.php +++ b/src/wp-includes/script-loader.php @@ -2770,6 +2770,11 @@ function _wp_normalize_relative_css_links( $css, $stylesheet_url ) { continue; } + // Skip if the URL is an HTML ID. + if ( str_starts_with( $src_result, '#' ) ) { + continue; + } + // Build the absolute URL. $absolute_url = dirname( $stylesheet_url ) . '/' . $src_result; $absolute_url = str_replace( '/./', '/', $absolute_url ); diff --git a/tests/phpunit/tests/dependencies/styles.php b/tests/phpunit/tests/dependencies/styles.php index bec55ac032..6af0b09866 100644 --- a/tests/phpunit/tests/dependencies/styles.php +++ b/tests/phpunit/tests/dependencies/styles.php @@ -195,6 +195,7 @@ class Tests_Dependencies_Styles extends WP_UnitTestCase { * @dataProvider data_normalize_relative_css_links * * @ticket 54243 + * @ticket 54922 * * @covers ::_wp_normalize_relative_css_links * @@ -231,6 +232,10 @@ class Tests_Dependencies_Styles extends WP_UnitTestCase { 'css' => 'p {background-image: url(\'http://foo.com/image2.png\');}', 'expected' => 'p {background-image: url(\'http://foo.com/image2.png\');}', ), + 'An HTML ID' => array( + 'css' => 'clip-path: url(#image1);', + 'expected' => 'clip-path: url(#image1);', + ), ); }