Theme JSON: Ensure root selector (body) is not wrapped in :root :where().
Pre-WordPress 6.6, the `body` selector was used for styles associated with the body. In 6.6, this was mistakenly changed to `:root :where(body)`, an increase in specificity, causing some issues for themes. This change reverts the specificity increase, styles again use the `body` selector. Syncs PHP changes from https://github.com/WordPress/gutenberg/pull/63726. Props talldanwp, andrewserong, aaronrobertshaw, mukesh27, hellofromtonya. Fixes #61704. Built from https://develop.svn.wordpress.org/trunk@58856 git-svn-id: http://core.svn.wordpress.org/trunk@58252 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
dc84e3d2c2
commit
f2bf0373a5
|
@ -2738,6 +2738,8 @@ class WP_Theme_JSON {
|
||||||
* @since 6.6.0 Setting a min-height of HTML when root styles have a background gradient or image.
|
* @since 6.6.0 Setting a min-height of HTML when root styles have a background gradient or image.
|
||||||
* Updated general global styles specificity to 0-1-0.
|
* Updated general global styles specificity to 0-1-0.
|
||||||
* Fixed custom CSS output in block style variations.
|
* Fixed custom CSS output in block style variations.
|
||||||
|
* @since 6.6.1 Avoid applying `:root :where()` wrapper to top-level element-only selectors.
|
||||||
|
* @since 6.6.2 Avoid applying `:root :where()` wrapper to root selectors.
|
||||||
*
|
*
|
||||||
* @param array $block_metadata Metadata about the block to get styles for.
|
* @param array $block_metadata Metadata about the block to get styles for.
|
||||||
*
|
*
|
||||||
|
@ -2892,6 +2894,9 @@ class WP_Theme_JSON {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
* Root selector (body) styles should not be wrapped in `:root where()` to keep
|
||||||
|
* specificity at (0,0,1) and maintain backwards compatibility.
|
||||||
|
*
|
||||||
* Top-level element styles using element-only specificity selectors should
|
* Top-level element styles using element-only specificity selectors should
|
||||||
* not get wrapped in `:root :where()` to maintain backwards compatibility.
|
* not get wrapped in `:root :where()` to maintain backwards compatibility.
|
||||||
*
|
*
|
||||||
|
@ -2899,11 +2904,13 @@ class WP_Theme_JSON {
|
||||||
* still need to be wrapped in `:root :where` to cap specificity for nested
|
* still need to be wrapped in `:root :where` to cap specificity for nested
|
||||||
* variations etc. Pseudo selectors won't match the ELEMENTS selector exactly.
|
* variations etc. Pseudo selectors won't match the ELEMENTS selector exactly.
|
||||||
*/
|
*/
|
||||||
$element_only_selector = $current_element &&
|
$element_only_selector = $is_root_selector || (
|
||||||
|
$current_element &&
|
||||||
isset( static::ELEMENTS[ $current_element ] ) &&
|
isset( static::ELEMENTS[ $current_element ] ) &&
|
||||||
// buttons, captions etc. still need `:root :where()` as they are class based selectors.
|
// buttons, captions etc. still need `:root :where()` as they are class based selectors.
|
||||||
! isset( static::__EXPERIMENTAL_ELEMENT_CLASS_NAMES[ $current_element ] ) &&
|
! isset( static::__EXPERIMENTAL_ELEMENT_CLASS_NAMES[ $current_element ] ) &&
|
||||||
static::ELEMENTS[ $current_element ] === $selector;
|
static::ELEMENTS[ $current_element ] === $selector
|
||||||
|
);
|
||||||
|
|
||||||
// 2. Generate and append the rules that use the general selector.
|
// 2. Generate and append the rules that use the general selector.
|
||||||
$general_selector = $element_only_selector ? $selector : ":root :where($selector)";
|
$general_selector = $element_only_selector ? $selector : ":root :where($selector)";
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '6.7-alpha-58855';
|
$wp_version = '6.7-alpha-58856';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
|
Loading…
Reference in New Issue