Changeset 54305
- Timestamp:
- 09/26/2022 09:06:02 AM (2 years ago)
- Location:
- trunk/src
- Files:
-
- 1 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/class-wp-theme-json.php
r54272 r54305 774 774 } 775 775 776 // Assign defaults, then over write those that the block sets by itself.776 // Assign defaults, then override those that the block sets by itself. 777 777 // If the block selector is compounded, will append the element to each 778 778 // individual block selector. … … 867 867 * - `variables`: only the CSS Custom Properties for presets & custom ones. 868 868 * - `styles`: only the styles section in theme.json. 869 * - `presets`: only the classes for the presets. 870 * @param array $origins A list of origins to include. By default it includes VALID_ORIGINS. 869 * - `presets`: only the classes for the presets. @param array $origins A list of origins to include. By default it includes VALID_ORIGINS. 870 * @param array $options An array of options for now used for internal purposes only (may change without notice). 871 * The options currently supported are 'scope' that makes sure all style are scoped to a given selector, 872 * and root_selector which overwrites and forces a given selector to be used on the root node. 871 873 * @return string Stylesheet. 872 874 */ 873 public function get_stylesheet( $types = array( 'variables', 'styles', 'presets' ), $origins = null ) {875 public function get_stylesheet( $types = array( 'variables', 'styles', 'presets' ), $origins = null, $options = array() ) { 874 876 if ( null === $origins ) { 875 877 $origins = static::VALID_ORIGINS; … … 892 894 $setting_nodes = static::get_setting_nodes( $this->theme_json, $blocks_metadata ); 893 895 896 $root_style_key = array_search( static::ROOT_BLOCK_SELECTOR, array_column( $style_nodes, 'selector' ), true ); 897 $root_settings_key = array_search( static::ROOT_BLOCK_SELECTOR, array_column( $setting_nodes, 'selector' ), true ); 898 899 if ( ! empty( $options['scope'] ) ) { 900 foreach ( $setting_nodes as &$node ) { 901 $node['selector'] = static::scope_selector( $options['scope'], $node['selector'] ); 902 } 903 foreach ( $style_nodes as &$node ) { 904 $node['selector'] = static::scope_selector( $options['scope'], $node['selector'] ); 905 } 906 } 907 908 if ( ! empty( $options['root_selector'] ) ) { 909 if ( false !== $root_settings_key ) { 910 $setting_nodes[ $root_settings_key ]['selector'] = $options['root_selector']; 911 } 912 if ( false !== $root_style_key ) { 913 $setting_nodes[ $root_style_key ]['selector'] = $options['root_selector']; 914 } 915 } 916 894 917 $stylesheet = ''; 895 918 … … 899 922 900 923 if ( in_array( 'styles', $types, true ) ) { 901 $root_block_key = array_search( static::ROOT_BLOCK_SELECTOR, array_column( $style_nodes, 'selector' ), true ); 902 903 if ( false !== $root_block_key ) { 904 $stylesheet .= $this->get_root_layout_rules( static::ROOT_BLOCK_SELECTOR, $style_nodes[ $root_block_key ] ); 924 if ( false !== $root_style_key ) { 925 $stylesheet .= $this->get_root_layout_rules( $style_nodes[ $root_style_key ]['selector'], $style_nodes[ $root_style_key ] ); 905 926 } 906 927 $stylesheet .= $this->get_block_classes( $style_nodes ); 907 928 } elseif ( in_array( 'base-layout-styles', $types, true ) ) { 929 $root_selector = static::ROOT_BLOCK_SELECTOR; 930 $columns_selector = '.wp-block-columns'; 931 if ( ! empty( $options['scope'] ) ) { 932 $root_selector = static::scope_selector( $options['scope'], $root_selector ); 933 $columns_selector = static::scope_selector( $options['scope'], $columns_selector ); 934 } 935 if ( ! empty( $options['root_selector'] ) ) { 936 $root_selector = $options['root_selector']; 937 } 908 938 // Base layout styles are provided as part of `styles`, so only output separately if explicitly requested. 909 939 // For backwards compatibility, the Columns block is explicitly included, to support a different default gap value. … … 911 941 array( 912 942 'path' => array( 'styles' ), 913 'selector' => static::ROOT_BLOCK_SELECTOR,943 'selector' => $root_selector, 914 944 ), 915 945 array( 916 946 'path' => array( 'styles', 'blocks', 'core/columns' ), 917 'selector' => '.wp-block-columns',947 'selector' => $columns_selector, 918 948 'name' => 'core/columns', 919 949 ), … … 1366 1396 * @return string Scoped selector. 1367 1397 */ 1368 p rotectedstatic function scope_selector( $scope, $selector ) {1398 public static function scope_selector( $scope, $selector ) { 1369 1399 $scopes = explode( ',', $scope ); 1370 1400 $selectors = explode( ',', $selector ); … … 1373 1403 foreach ( $scopes as $outer ) { 1374 1404 foreach ( $selectors as $inner ) { 1375 $selectors_scoped[] = trim( $outer ) . ' ' . trim( $inner ); 1376 } 1377 } 1378 1379 return implode( ', ', $selectors_scoped ); 1405 $outer = trim( $outer ); 1406 $inner = trim( $inner ); 1407 if ( ! empty( $outer ) && ! empty( $inner ) ) { 1408 $selectors_scoped[] = $outer . ' ' . $inner; 1409 } elseif ( empty( $outer ) ) { 1410 $selectors_scoped[] = $inner; 1411 } elseif ( empty( $inner ) ) { 1412 $selectors_scoped[] = $outer; 1413 } 1414 } 1415 } 1416 1417 $result = implode( ', ', $selectors_scoped ); 1418 return $result; 1380 1419 } 1381 1420 -
trunk/src/wp-settings.php
r54251 r54305 323 323 require ABSPATH . WPINC . '/class-wp-block-supports.php'; 324 324 require ABSPATH . WPINC . '/block-supports/utils.php'; 325 require ABSPATH . WPINC . '/block-supports/settings.php'; 325 326 require ABSPATH . WPINC . '/block-supports/align.php'; 326 327 require ABSPATH . WPINC . '/block-supports/border.php';
Note: See TracChangeset
for help on using the changeset viewer.