Changeset 54306 for trunk/src/wp-includes/class-wp-theme-json.php
- Timestamp:
- 09/26/2022 10:15:17 AM (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/class-wp-theme-json.php
r54305 r54306 774 774 } 775 775 776 // Assign defaults, then over ride those that the block sets by itself.776 // Assign defaults, then overwrite 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. @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. 869 * - `presets`: only the classes for the presets. 870 * @param array $origins A list of origins to include. By default it includes VALID_ORIGINS. 873 871 * @return string Stylesheet. 874 872 */ 875 public function get_stylesheet( $types = array( 'variables', 'styles', 'presets' ), $origins = null , $options = array()) {873 public function get_stylesheet( $types = array( 'variables', 'styles', 'presets' ), $origins = null ) { 876 874 if ( null === $origins ) { 877 875 $origins = static::VALID_ORIGINS; … … 894 892 $setting_nodes = static::get_setting_nodes( $this->theme_json, $blocks_metadata ); 895 893 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 917 894 $stylesheet = ''; 918 895 … … 922 899 923 900 if ( in_array( 'styles', $types, true ) ) { 924 if ( false !== $root_style_key ) { 925 $stylesheet .= $this->get_root_layout_rules( $style_nodes[ $root_style_key ]['selector'], $style_nodes[ $root_style_key ] ); 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 ] ); 926 905 } 927 906 $stylesheet .= $this->get_block_classes( $style_nodes ); 928 907 } 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 }938 908 // Base layout styles are provided as part of `styles`, so only output separately if explicitly requested. 939 909 // For backwards compatibility, the Columns block is explicitly included, to support a different default gap value. … … 941 911 array( 942 912 'path' => array( 'styles' ), 943 'selector' => $root_selector,913 'selector' => static::ROOT_BLOCK_SELECTOR, 944 914 ), 945 915 array( 946 916 'path' => array( 'styles', 'blocks', 'core/columns' ), 947 'selector' => $columns_selector,917 'selector' => '.wp-block-columns', 948 918 'name' => 'core/columns', 949 919 ), … … 1396 1366 * @return string Scoped selector. 1397 1367 */ 1398 p ublicstatic function scope_selector( $scope, $selector ) {1368 protected static function scope_selector( $scope, $selector ) { 1399 1369 $scopes = explode( ',', $scope ); 1400 1370 $selectors = explode( ',', $selector ); … … 1403 1373 foreach ( $scopes as $outer ) { 1404 1374 foreach ( $selectors as $inner ) { 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; 1375 $selectors_scoped[] = trim( $outer ) . ' ' . trim( $inner ); 1376 } 1377 } 1378 1379 return implode( ', ', $selectors_scoped ); 1419 1380 } 1420 1381
Note: See TracChangeset
for help on using the changeset viewer.