WordPress/wp-includes/block-supports
hellofromTonya 8ddb28368a Themes: Introduce wp_theme_has_theme_json() for public consumption.
Adds `wp_theme_has_theme_json()` for public consumption, to replace the private internal Core-only `WP_Theme_JSON_Resolver::theme_has_support()` method. This new global function checks if a theme or its parent has a `theme.json` file.

For performance, results are cached as an integer `1` or `0` in the `'theme_json'` group with `'wp_theme_has_theme_json'` key. This is a non-persistent cache. Why? To make the derived data from `theme.json` is always fresh from the potential modifications done via hooks that can use dynamic data (modify the stylesheet depending on some option, settings depending on user permissions, etc.).

Also adds a new public function `wp_clean_theme_json_cache()` to clear the cache on `'switch_theme'` and `start_previewing_theme'`.

References:
* [https://github.com/WordPress/gutenberg/pull/45168 Gutenberg PR 45168] Add `wp_theme_has_theme_json` as a public API to know whether a theme has a `theme.json`.
* [https://github.com/WordPress/gutenberg/pull/45380 Gutenberg PR 45380] Deprecate `WP_Theme_JSON_Resolver:theme_has_support()`.
* [https://github.com/WordPress/gutenberg/pull/46150 Gutenberg PR 46150] Make `theme.json` object caches non-persistent.
* [https://github.com/WordPress/gutenberg/pull/45979 Gutenberg PR 45979] Don't check if constants set by `wp_initial_constants()` are defined.
* [https://github.com/WordPress/gutenberg/pull/45950 Gutenberg PR 45950] Cleaner logic in `wp_theme_has_theme_json`.

Follow-up to [54493], [53282], [52744], [52049], [50959].

Props oandregal, afragen, alexstine, aristath, azaozz, costdev, flixos90, hellofromTonya, mamaduka, mcsf, ocean90, spacedmonkey.
Fixes #56975.
Built from https://develop.svn.wordpress.org/trunk@55086


git-svn-id: http://core.svn.wordpress.org/trunk@54619 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-01-18 11:40:10 +00:00
..
align.php Docs: Miscellaneous Docblock corrections in several `/block-supports` files. 2021-12-01 23:16:04 +00:00
border.php Editor: Backport block supports (border, color, elements, spacing) from Gutenberg to WP 6.1. 2022-09-19 20:14:10 +00:00
colors.php Docs: Use third-person singular verbs for Block Supports related function descriptions, as per docblocks standards. 2022-11-24 22:36:11 +00:00
custom-classname.php Docs: Use third-person singular verbs for Block Supports related function descriptions, as per docblocks standards. 2022-11-24 22:36:11 +00:00
dimensions.php Editor: Backport block support changes from the Gutenberg plugin 2022-04-05 12:08:02 +00:00
duotone.php Docs: Use third-person singular verbs for Block Supports related function descriptions, as per docblocks standards. 2022-11-24 22:36:11 +00:00
elements.php Docs: Various docblock fixes in Block Supports related functions. 2022-11-24 22:52:11 +00:00
generated-classname.php Docs: Various docblock fixes in Block Supports related functions. 2022-11-24 22:52:11 +00:00
layout.php Themes: Introduce wp_theme_has_theme_json() for public consumption. 2023-01-18 11:40:10 +00:00
spacing.php Docs: Various docblock fixes in Block Supports related functions. 2022-11-24 22:52:11 +00:00
typography.php Editor: Improve how `min`/`max` font sizes are calculated for fluid typography. 2022-11-11 17:48:12 +00:00
utils.php Editor: Backport block support changes from the Gutenberg plugin 2022-04-05 12:08:02 +00:00