Changeset 54822
- Timestamp:
- 11/11/2022 05:23:19 PM (2 years ago)
- Location:
- branches/6.1
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/6.1
-
branches/6.1/src/wp-includes/class-wp-theme-json.php
r54805 r54822 1951 1951 1952 1952 /** 1953 * Returns a filtered declarations array if there is a separator block with only a background 1954 * style defined in theme.json by adding a color attribute to reflect the changes in the front. 1955 * 1956 * @since 6.1.1 1957 * 1958 * @param array $declarations List of declarations. 1959 * @return array $declarations List of declarations filtered. 1960 */ 1961 private static function update_separator_declarations( $declarations ) { 1962 $background_color = ''; 1963 $border_color_matches = false; 1964 $text_color_matches = false; 1965 1966 foreach ( $declarations as $declaration ) { 1967 if ( 'background-color' === $declaration['name'] && ! $background_color && isset( $declaration['value'] ) ) { 1968 $background_color = $declaration['value']; 1969 } elseif ( 'border-color' === $declaration['name'] ) { 1970 $border_color_matches = true; 1971 } elseif ( 'color' === $declaration['name'] ) { 1972 $text_color_matches = true; 1973 } 1974 1975 if ( $background_color && $border_color_matches && $text_color_matches ) { 1976 break; 1977 } 1978 } 1979 1980 if ( $background_color && ! $border_color_matches && ! $text_color_matches ) { 1981 $declarations[] = array( 1982 'name' => 'color', 1983 'value' => $background_color, 1984 ); 1985 } 1986 1987 return $declarations; 1988 } 1989 1990 /** 1953 1991 * An internal method to get the block nodes from a theme.json file. 1954 1992 * … … 2132 2170 $declarations_duotone[] = $declaration; 2133 2171 } 2172 } 2173 2174 // Update declarations if there are separators with only background color defined. 2175 if ( '.wp-block-separator' === $selector ) { 2176 $declarations = static::update_separator_declarations( $declarations ); 2134 2177 } 2135 2178 -
branches/6.1/tests/phpunit/tests/theme/wpThemeJson.php
r54805 r54822 3999 3999 ); 4000 4000 } 4001 4002 /** 4003 * Tests the core separator block outbut based on various provided settings. 4004 * 4005 * @ticket 56903 4006 * 4007 * @dataProvider data_update_separator_declarations 4008 * 4009 * @param array $separator_block_settings Example separator block settings from the data provider. 4010 * @param array $expected_output Expected output from data provider. 4011 */ 4012 public function test_update_separator_declarations( $separator_block_settings, $expected_output ) { 4013 // If only background is defined, test that includes border-color to the style so it is applied on the front end. 4014 $theme_json = new WP_Theme_JSON( 4015 array( 4016 'version' => WP_Theme_JSON::LATEST_SCHEMA, 4017 'styles' => array( 4018 'blocks' => array( 4019 'core/separator' => $separator_block_settings, 4020 ), 4021 ), 4022 ), 4023 'default' 4024 ); 4025 4026 $stylesheet = $theme_json->get_stylesheet( array( 'styles' ) ); 4027 4028 $this->assertSame( $expected_output, $stylesheet ); 4029 } 4030 4031 /** 4032 * Data provider for separator declaration tests. 4033 * 4034 * @return array 4035 */ 4036 function data_update_separator_declarations() { 4037 return array( 4038 // If only background is defined, test that includes border-color to the style so it is applied on the front end. 4039 'only background' => array( 4040 array( 4041 'color' => array( 4042 'background' => 'blue', 4043 ), 4044 ), 4045 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }.wp-block-separator{background-color: blue;color: blue;}', 4046 ), 4047 // If background and text are defined, do not include border-color, as text color is enough. 4048 'background and text, no border-color' => array( 4049 array( 4050 'color' => array( 4051 'background' => 'blue', 4052 'text' => 'red', 4053 ), 4054 ), 4055 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }.wp-block-separator{background-color: blue;color: red;}', 4056 ), 4057 // If only text is defined, do not include border-color, as by itself is enough. 4058 'only text' => array( 4059 array( 4060 'color' => array( 4061 'text' => 'red', 4062 ), 4063 ), 4064 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }.wp-block-separator{color: red;}', 4065 ), 4066 // If background, text, and border-color are defined, include everything, CSS specifity will decide which to apply. 4067 'background, text, and border-color' => array( 4068 array( 4069 'color' => array( 4070 'background' => 'blue', 4071 'text' => 'red', 4072 ), 4073 'border' => array( 4074 'color' => 'pink', 4075 ), 4076 ), 4077 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }.wp-block-separator{background-color: blue;border-color: pink;color: red;}', 4078 ), 4079 // If background and border color are defined, include everything, CSS specifity will decide which to apply. 4080 'background, text, and border-color' => array( 4081 array( 4082 'color' => array( 4083 'background' => 'blue', 4084 ), 4085 'border' => array( 4086 'color' => 'pink', 4087 ), 4088 ), 4089 'expected_output' => 'body { margin: 0; }.wp-site-blocks > .alignleft { float: left; margin-right: 2em; }.wp-site-blocks > .alignright { float: right; margin-left: 2em; }.wp-site-blocks > .aligncenter { justify-content: center; margin-left: auto; margin-right: auto; }.wp-block-separator{background-color: blue;border-color: pink;}', 4090 ), 4091 ); 4092 } 4001 4093 }
Note: See TracChangeset
for help on using the changeset viewer.