From 6ccbb42f7ce392d11d11f4e9f5e129cb12941ebf Mon Sep 17 00:00:00 2001 From: Weston Ruter Date: Tue, 7 Oct 2025 06:24:43 +0000 Subject: [PATCH] Media: Switch to enqueueing `contain-intrinsic-size` CSS fix for `IMG` tags having `sizes=auto`. This deprecates the `wp_print_auto_sizes_contain_css_fix()` function running at `wp_head` priority 1, in favor of a `wp_enqueue_img_auto_sizes_contain_css_fix()` function which runs just before at `wp_head` priority 0. The latter function unhooks the former while also enqueueing an inline style to be printed with all other styles but up front to preserve the cascade. This eliminates directly printing the `STYLE` tag, which was a change done similarly before for the emoji styles. See #58775. For backwards compatibility, the CSS can still be prevented from being enqueued/printed via: remove_action( 'wp_head', 'wp_print_auto_sizes_contain_css_fix', 1 ); This change ensures that all styles are printed together using the correct API for emitting styles. Developed in https://github.com/WordPress/wordpress-develop/pull/8954. Follow-up to [59435]. Props westonruter, sabernhardt, SirLouen, flixos90, joemcgill, SergeyBiryukov, superpoincare. See #62413. Fixes #62731. Built from https://develop.svn.wordpress.org/trunk@60910 git-svn-id: http://core.svn.wordpress.org/trunk@60246 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/default-filters.php | 3 ++- wp-includes/deprecated.php | 30 +++++++++++++++++++++++++++++- wp-includes/media.php | 24 ++++++++++++++++++------ wp-includes/version.php | 2 +- 4 files changed, 50 insertions(+), 9 deletions(-) diff --git a/wp-includes/default-filters.php b/wp-includes/default-filters.php index 936bbb6a86..a194582657 100644 --- a/wp-includes/default-filters.php +++ b/wp-includes/default-filters.php @@ -628,7 +628,8 @@ add_action( 'wp_footer', 'wp_enqueue_stored_styles', 1 ); add_action( 'wp_default_styles', 'wp_default_styles' ); add_filter( 'style_loader_src', 'wp_style_loader_src', 10, 2 ); -add_action( 'wp_head', 'wp_print_auto_sizes_contain_css_fix', 1 ); +add_action( 'wp_head', 'wp_enqueue_img_auto_sizes_contain_css_fix', 0 ); // Must run before wp_print_auto_sizes_contain_css_fix(). +add_action( 'wp_head', 'wp_print_auto_sizes_contain_css_fix', 1 ); // Retained for backwards-compatibility. Unhooked by wp_enqueue_img_auto_sizes_contain_css_fix(). add_action( 'wp_head', 'wp_maybe_inline_styles', 1 ); // Run for styles enqueued in . add_action( 'wp_footer', 'wp_maybe_inline_styles', 1 ); // Run for late-loaded styles in the footer. diff --git a/wp-includes/deprecated.php b/wp-includes/deprecated.php index 7b5abfe52b..2569e5ad30 100644 --- a/wp-includes/deprecated.php +++ b/wp-includes/deprecated.php @@ -6460,4 +6460,32 @@ function wp_add_editor_classic_theme_styles( $editor_settings ) { array_unshift( $editor_settings['styles'], $classic_theme_styles_settings ); return $editor_settings; -} \ No newline at end of file +} + +/** + * Prints a CSS rule to fix potential visual issues with images using `sizes=auto`. + * + * This rule overrides the similar rule in the default user agent stylesheet, to avoid images that use e.g. + * `width: auto` or `width: fit-content` to appear smaller. + * + * @since 6.7.1 + * @deprecated 6.9.0 Use wp_enqueue_img_auto_sizes_contain_css_fix() instead. + * @see wp_enqueue_img_auto_sizes_contain_css_fix() + * + * @see https://html.spec.whatwg.org/multipage/rendering.html#img-contain-size + * @see https://core.trac.wordpress.org/ticket/62413 + * @see https://core.trac.wordpress.org/ticket/62731 + */ +function wp_print_auto_sizes_contain_css_fix() { + _deprecated_function( __FUNCTION__, '6.9.0', 'wp_enqueue_img_auto_sizes_contain_css_fix' ); + + /** This filter is documented in wp-includes/media.php */ + $add_auto_sizes = apply_filters( 'wp_img_tag_add_auto_sizes', true ); + if ( ! $add_auto_sizes ) { + return; + } + + ?> + + - - queue, $handle ); } /** diff --git a/wp-includes/version.php b/wp-includes/version.php index 5eb6b33758..7ea3ee258c 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.9-alpha-60909'; +$wp_version = '6.9-alpha-60910'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.