wp_get_global_stylesheet() – Returns the stylesheet resulting of merging core, theme, and user data.

You appear to be a bot. Output may be restricted

Description

Returns the stylesheet resulting of merging core, theme, and user data.

Usage

$string = wp_get_global_stylesheet( $types );

Parameters

$types
( array ) optional – Types of styles to load. Optional. It accepts 'variables', 'styles', 'presets' as values. If empty, it'll load all for themes with theme.json support and only [ 'variables', 'presets' ] for themes without theme.json support.

Returns

string Stylesheet.

Source

File name: wordpress/wp-includes/global-styles-and-settings.php
Lines:

1 to 77 of 77
function wp_get_global_stylesheet( $types = array() ) {
  // Return cached value if it can be used and exists.
  // It's cached by theme to make sure that theme switching clears the cache.
  $can_use_cached = (
    ( empty( $types ) ) &&
    ( ! defined( 'WP_DEBUG' ) || ! WP_DEBUG ) &&
    ( ! defined( 'SCRIPT_DEBUG' ) || ! SCRIPT_DEBUG ) &&
    ( ! defined( 'REST_REQUEST' ) || ! REST_REQUEST ) &&
    ! is_admin()
  );
  $transient_name = 'global_styles_' . get_stylesheet();
  if ( $can_use_cached ) {
    $cached = get_transient( $transient_name );
    if ( $cached ) {
      return $cached;
    }
  }

  $tree = WP_Theme_JSON_Resolver::get_merged_data();

  $supports_theme_json = WP_Theme_JSON_Resolver::theme_has_support();
  if ( empty( $types ) && ! $supports_theme_json ) {
    $types = array( 'variables', 'presets', 'base-layout-styles' );
  } elseif ( empty( $types ) ) {
    $types = array( 'variables', 'styles', 'presets' );
  }

  /*
	 * If variables are part of the stylesheet, then add them.
	 * This is so themes without a theme.json still work as before 5.9:
	 * they can override the default presets.
	 * See https://core.trac.wordpress.org/ticket/54782
	 */
  $styles_variables = '';
  if ( in_array( 'variables', $types, true ) ) {
    /*
		 * Only use the default, theme, and custom origins. Why?
		 * Because styles for `blocks` origin are added at a later phase
		 * (i.e. in the render cycle). Here, only the ones in use are rendered.
		 * @see wp_add_global_styles_for_blocks
		 */
    $origins          = array( 'default', 'theme', 'custom' );
    $styles_variables = $tree->get_stylesheet( array( 'variables' ), $origins );
    $types            = array_diff( $types, array( 'variables' ) );
  }

  /*
	 * For the remaining types (presets, styles), we do consider origins:
	 *
	 * - themes without theme.json: only the classes for the presets defined by core
	 * - themes with theme.json: the presets and styles classes, both from core and the theme
	 */
  $styles_rest = '';
  if ( ! empty( $types ) ) {
    /*
		 * Only use the default, theme, and custom origins. Why?
		 * Because styles for `blocks` origin are added at a later phase
		 * (i.e. in the render cycle). Here, only the ones in use are rendered.
		 * @see wp_add_global_styles_for_blocks
		 */
    $origins = array( 'default', 'theme', 'custom' );
    if ( ! $supports_theme_json ) {
      $origins = array( 'default' );
    }
    $styles_rest = $tree->get_stylesheet( $types, $origins );
  }

  $stylesheet = $styles_variables . $styles_rest;

  if ( $can_use_cached ) {
    // Cache for a minute.
    // This cache doesn't need to be any longer, we only want to avoid spikes on high-traffic sites.
    set_transient( $transient_name, $stylesheet, MINUTE_IN_SECONDS );
  }

  return $stylesheet;
}
 

 View on GitHub View on Trac