| @@ -130,8 +130,22 @@ | ||
| 130 | 130 | return _wp_array_get( $settings, $path, $settings ); |
| 131 | 131 | } |
| 132 | 132 | |
| 133 | 133 | /** |
| 134 | + * Returns CSS media queries for responsive viewport style states. | |
| 135 | + * | |
| 136 | + * @param mixed $viewport_settings Viewport settings from theme.json. | |
| 137 | + * @param array $options Options for generating media queries. | |
| 138 | + * @return array Responsive media queries. | |
| 139 | + */ | |
| 140 | +function gutenberg_get_viewport_media_queries( $viewport_settings = null, $options = array() ) { | |
| 141 | + return WP_Theme_JSON_Gutenberg::get_viewport_media_queries( | |
| 142 | + $viewport_settings, | |
| 143 | + $options | |
| 144 | + ); | |
| 145 | +} | |
| 146 | + | |
| 147 | +/** | |
| 134 | 148 | * Gets the global styles custom css from theme.json. |
| 135 | 149 | * |
| 136 | 150 | * @deprecated Gutenberg 18.6.0 Use {@see 'gutenberg_get_global_stylesheet'} instead for top-level custom CSS, or {@see 'WP_Theme_JSON_Gutenberg::get_styles_for_block'} for block-level custom CSS. |
| 137 | 151 | * |
| @@ -337,9 +351,9 @@ | ||
| 337 | 351 | } |
| 338 | 352 | } |
| 339 | 353 | |
| 340 | 354 | /** |
| 341 | - * Private function to clean the caches used by gutenberg_get_global_settings method. | |
| 355 | + * Private function to clean the caches used by the theme JSON APIs. | |
| 342 | 356 | * |
| 343 | 357 | * @access private |
| 344 | 358 | */ |
| 345 | 359 | function _gutenberg_clean_theme_json_caches() { |
| @@ -346,8 +360,12 @@ | ||
| 346 | 360 | wp_cache_delete( 'wp_theme_has_theme_json', 'theme_json' ); |
| 347 | 361 | wp_cache_delete( 'gutenberg_get_global_stylesheet', 'theme_json' ); |
| 348 | 362 | wp_cache_delete( 'gutenberg_get_global_settings_custom', 'theme_json' ); |
| 349 | 363 | wp_cache_delete( 'gutenberg_get_global_settings_theme', 'theme_json' ); |
| 364 | + wp_cache_delete( 'gutenberg_get_global_styles_custom', 'theme_json' ); | |
| 365 | + wp_cache_delete( 'gutenberg_get_global_styles_custom_resolved', 'theme_json' ); | |
| 366 | + wp_cache_delete( 'gutenberg_get_global_styles_theme', 'theme_json' ); | |
| 367 | + wp_cache_delete( 'gutenberg_get_global_styles_theme_resolved', 'theme_json' ); | |
| 350 | 368 | wp_cache_delete( 'gutenberg_get_global_custom_css', 'theme_json' ); |
| 351 | 369 | wp_cache_delete( 'gutenberg_get_global_styles_base_custom_css', 'theme_json' ); |
| 352 | 370 | WP_Theme_JSON_Resolver_Gutenberg::clean_cached_data(); |
| 353 | 371 | } |
| @@ -392,13 +410,24 @@ | ||
| 392 | 410 | $resolve_variables = isset( $context['transforms'] ) |
| 393 | 411 | && is_array( $context['transforms'] ) |
| 394 | 412 | && in_array( 'resolve-variables', $context['transforms'], true ); |
| 395 | 413 | |
| 396 | - $merged_data = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data( $origin ); | |
| 414 | + $cache_group = 'theme_json'; | |
| 415 | + $cache_key = 'gutenberg_get_global_styles_' . $origin; | |
| 397 | 416 | if ( $resolve_variables ) { |
| 398 | - $merged_data = WP_Theme_JSON_Gutenberg::resolve_variables( $merged_data ); | |
| 417 | + $cache_key .= '_resolved'; | |
| 399 | 418 | } |
| 400 | - $styles = $merged_data->get_raw_data()['styles']; | |
| 419 | + $styles = wp_cache_get( $cache_key, $cache_group ); | |
| 420 | + | |
| 421 | + if ( false === $styles || WP_DEBUG ) { | |
| 422 | + $merged_data = WP_Theme_JSON_Resolver_Gutenberg::get_merged_data( $origin ); | |
| 423 | + if ( $resolve_variables ) { | |
| 424 | + $merged_data = WP_Theme_JSON_Gutenberg::resolve_variables( $merged_data ); | |
| 425 | + } | |
| 426 | + $styles = $merged_data->get_raw_data()['styles']; | |
| 427 | + wp_cache_set( $cache_key, $styles, $cache_group ); | |
| 428 | + } | |
| 429 | + | |
| 401 | 430 | return _wp_array_get( $styles, $path, $styles ); |
| 402 | 431 | } |
| 403 | 432 | |
| 404 | 433 | /** |