Changeset 55658
- Timestamp:
- 04/19/2023 01:24:40 AM (18 months ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/script-loader.php
r55628 r55658 2940 2940 */ 2941 2941 function _wp_normalize_relative_css_links( $css, $stylesheet_url ) { 2942 $has_src_results = preg_match_all( '#url\s*\(\s*[\'"]?\s*([^\'"\)]+)#', $css, $src_results ); 2943 if ( $has_src_results ) { 2944 // Loop through the URLs to find relative ones. 2945 foreach ( $src_results[1] as $src_index => $src_result ) { 2946 // Skip if this is an absolute URL. 2947 if ( 0 === strpos( $src_result, 'http' ) || 0 === strpos( $src_result, '//' ) ) { 2948 continue; 2942 return preg_replace_callback( 2943 '#(url\s*\(\s*[\'"]?\s*)([^\'"\)]+)#', 2944 static function ( $matches ) use ( $stylesheet_url ) { 2945 list( , $prefix, $url ) = $matches; 2946 2947 if ( ! ( 2948 str_starts_with( $url, 'http:' ) 2949 || 2950 str_starts_with( $url, 'https:' ) 2951 || 2952 str_starts_with( $url, '//' ) 2953 || 2954 str_starts_with( $url, '#' ) 2955 || 2956 str_starts_with( $url, 'data:' ) 2957 ) ) { 2958 // Build the absolute URL. 2959 $absolute_url = dirname( $stylesheet_url ) . '/' . $url; 2960 $absolute_url = str_replace( '/./', '/', $absolute_url ); 2961 2962 // Convert to URL related to the site root. 2963 $url = wp_make_link_relative( $absolute_url ); 2949 2964 } 2950 2965 2951 // Skip if the URL is an HTML ID. 2952 if ( str_starts_with( $src_result, '#' ) ) { 2953 continue; 2954 } 2955 2956 // Skip if the URL is a data URI. 2957 if ( str_starts_with( $src_result, 'data:' ) ) { 2958 continue; 2959 } 2960 2961 // Build the absolute URL. 2962 $absolute_url = dirname( $stylesheet_url ) . '/' . $src_result; 2963 $absolute_url = str_replace( '/./', '/', $absolute_url ); 2964 // Convert to URL related to the site root. 2965 $relative_url = wp_make_link_relative( $absolute_url ); 2966 2967 // Replace the URL in the CSS. 2968 $css = str_replace( 2969 $src_results[0][ $src_index ], 2970 str_replace( $src_result, $relative_url, $src_results[0][ $src_index ] ), 2971 $css 2972 ); 2973 } 2974 } 2975 2976 return $css; 2966 return $prefix . $url; 2967 }, 2968 $css 2969 ); 2977 2970 } 2978 2971 -
trunk/tests/phpunit/tests/dependencies/styles.php
r55368 r55658 241 241 'expected' => 'img {mask-image: url(\'data:image/svg+xml;utf8,<svg></svg>\');}', 242 242 ), 243 'URLs with path beginning with http' => array( 244 'css' => 'p {background:url( "http-is-awesome.png" );}', 245 'expected' => 'p {background:url( "/wp-content/themes/test/http-is-awesome.png" );}', 246 ), 247 'URLs with path beginning with https' => array( 248 'css' => 'p {background:url( "https-is-more-awesome.png" );}', 249 'expected' => 'p {background:url( "/wp-content/themes/test/https-is-more-awesome.png" );}', 250 ), 243 251 ); 244 252 }
Note: See TracChangeset
for help on using the changeset viewer.