WordPress/wp-includes
Felix Arntz fbcb084305 Editor: Allow registering PHP manifest file for block metadata collections for enhanced performance.
Typically, when registering a new block type, its metadata is read from the provided `block.json` file. The more block types are registered on a site, the more costly becomes this process, as it involves filesystem reads and parsing JSON.

WordPress Core's built-in blocks have in the past worked around that by having a auto-generated PHP manifest file that includes the already parsed JSON data for all blocks. This changeset effectively allows plugins to do the same, by introducing a new API function `wp_register_block_metadata_collection()`. The WordPress Core block manifest is now handled using this API as well, rather than custom logic baked into `register_block_type_from_metadata()`.

The `wp_register_block_metadata_collection()` function requires two parameters:
* `$path`: The base path in which block files for the collection reside.
* `$manifest`: The path to the manifest file for the collection.

Every `block.json` file that is supposed to be part of the collection must reside within the provided `$path`, within its own block-specific directory matching the block name (without the block namespace). For example, for a collection `$path` of `/wp-content/plugins/test-plugin` and a block `test-plugin/testimonial`, the block file could be `/wp-content/plugins/test-plugins/blocks/testimonial/block.json`.

It is recommended that plugins use the new API function for enhanced performance, especially if they register several block types. However, the use of the function is entirely optional. Not using it will not result in any difference in user-facing behavior.

Props mreishus, flixos90, gziolo, spacedmonkey, azaozz, mukesh27.
Fixes #62002.

Built from https://develop.svn.wordpress.org/trunk@59132


git-svn-id: http://core.svn.wordpress.org/trunk@58528 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2024-09-30 17:08:26 +00:00
..
assets Editor: Update packages for 6.7 Beta 1. 2024-09-30 05:11:31 +00:00
block-bindings
block-patterns Editor: Deprecate "Social links with a shared background color" pattern. 2024-09-13 05:37:16 +00:00
block-supports Block Styles: Ensure unique classname generation for variations 2024-08-29 05:41:10 +00:00
blocks Editor: Allow registering PHP manifest file for block metadata collections for enhanced performance. 2024-09-30 17:08:26 +00:00
certificates
css Editor: Update packages for 6.7 Beta 1. 2024-09-30 05:11:31 +00:00
customize Administration: Modernize Site Icon UI in settings, customizer. 2024-08-23 22:47:16 +00:00
fonts
html-api HTML API: Switch to HTML namespace when entering Integration Points. 2024-09-27 00:44:19 +00:00
ID3
images
interactivity-api Interactivity API: Add wp_interactivity_get_element() function. 2024-09-30 17:07:13 +00:00
IXR Code Modernization: Remove xml_set_object() in IXR_Message::parse(). 2024-09-18 18:04:14 +00:00
js External Libraries: Update the Moment library to version 2.30.1. 2024-09-30 16:14:22 +00:00
l10n I18N: Add a new way to determine whether a translation is available. 2024-09-17 20:58:15 +00:00
php-compat
PHPMailer
pomo
Requests
rest-api REST API/Editor: Support post formats in Query Block & Posts API. 2024-09-30 01:19:16 +00:00
SimplePie
sitemaps
sodium_compat Upgrade/Install: Add missing files from the sodium_compat v1.21.1 update. 2024-07-18 13:48:15 +00:00
style-engine Background: add background attachment support to theme.json styles 2024-07-31 02:41:16 +00:00
Text Code Modernization: Fix trigger_error() with E_USER_ERROR deprecation in Text_Diff_Op::reverse(). 2024-09-27 18:19:17 +00:00
theme-compat
widgets General: Remove noopener from links opening in a new tab. 2024-09-30 05:19:16 +00:00
admin-bar.php Docs: Add changing existing items recommendations to 'admin_bar_menu' action. 2024-09-03 19:58:11 +00:00
atomlib.php Code Modernization: Remove xml_set_object() in AtomParser::parse(). 2024-09-18 21:20:15 +00:00
author-template.php
block-bindings.php
block-editor.php Block bindings: Add canUpdateBlockBindings editor setting. 2024-09-30 06:49:18 +00:00
block-i18n.json
block-patterns.php Editor: Deprecate "Social links with a shared background color" pattern. 2024-09-13 05:37:16 +00:00
block-template-utils.php Block Hooks: apply_block_hooks_to_content in Patterns, Templates. 2024-09-27 09:20:18 +00:00
block-template.php Editor: Add plugin template registration API and improve theme overrides for plugin-registered templates 2024-09-20 02:07:12 +00:00
blocks.php Editor: Allow registering PHP manifest file for block metadata collections for enhanced performance. 2024-09-30 17:08:26 +00:00
bookmark-template.php Date/Time, PHP Compat: Prevent type errors using GMT offset option. 2024-09-18 22:37:15 +00:00
bookmark.php
cache-compat.php
cache.php
canonical.php Docs: Correct inline comment formatting in redirect_canonical(). 2024-08-22 23:47:15 +00:00
capabilities.php Docs: Add a @since note to map_meta_cap() for edit_block_binding capability. 2024-09-30 13:48:16 +00:00
category-template.php
category.php
class-avif-info.php
class-feed.php
class-http.php
class-IXR.php
class-json.php
class-oembed.php
class-phpass.php External Libraries: Update PHPass library. 2024-09-17 21:08:16 +00:00
class-phpmailer.php
class-pop3.php Bootstrap/Load: Ensure uses of set_time_limit are documented why. 2024-09-17 22:41:13 +00:00
class-requests.php
class-simplepie.php
class-smtp.php
class-snoopy.php
class-walker-category-dropdown.php
class-walker-category.php
class-walker-comment.php
class-walker-nav-menu.php General: Remove noopener from links opening in a new tab. 2024-09-30 05:19:16 +00:00
class-walker-page-dropdown.php
class-walker-page.php
class-wp-admin-bar.php Toolbar: Move user and recovery menus to a higher priority. 2024-07-18 00:52:17 +00:00
class-wp-ajax-response.php
class-wp-application-passwords.php App Passwords: Don't prevent non-unique App Password names. 2024-09-24 16:40:17 +00:00
class-wp-block-bindings-registry.php Block Bindings: Adds context needed by sources during its processing 2024-09-23 12:35:15 +00:00
class-wp-block-bindings-source.php Block bindings: Adds a filter to customize the output of a block bindings source. 2024-09-03 16:33:15 +00:00
class-wp-block-editor-context.php
class-wp-block-list.php
class-wp-block-metadata-registry.php Editor: Allow registering PHP manifest file for block metadata collections for enhanced performance. 2024-09-30 17:08:26 +00:00
class-wp-block-parser-block.php
class-wp-block-parser-frame.php Editor: Update packages for 6.7 Beta 1. 2024-09-20 01:55:35 +00:00
class-wp-block-parser.php
class-wp-block-pattern-categories-registry.php
class-wp-block-patterns-registry.php Block Hooks: apply_block_hooks_to_content in Patterns, Templates. 2024-09-27 09:20:18 +00:00
class-wp-block-styles-registry.php
class-wp-block-supports.php Editor: Default attribute value not used with get_block_wrapper_attributes 2024-09-26 12:47:16 +00:00
class-wp-block-template.php Editor: Add plugin template registration API and improve theme overrides for plugin-registered templates 2024-09-20 02:07:12 +00:00
class-wp-block-templates-registry.php Editor: Add plugin template registration API and improve theme overrides for plugin-registered templates 2024-09-20 02:07:12 +00:00
class-wp-block-type-registry.php
class-wp-block-type.php
class-wp-block.php Block bindings: Ensure block receives __default bindings when render. 2024-09-26 14:51:18 +00:00
class-wp-classic-to-block-menu-converter.php
class-wp-comment-query.php
class-wp-comment.php
class-wp-customize-control.php
class-wp-customize-manager.php Editor: Respect show_avatars option in block editor and Customizer. 2024-09-22 22:50:18 +00:00
class-wp-customize-nav-menus.php
class-wp-customize-panel.php
class-wp-customize-section.php
class-wp-customize-setting.php
class-wp-customize-widgets.php
class-wp-date-query.php
class-wp-dependencies.php Script Loader: Refactor Etag generation for concatenated assets. 2024-08-25 23:48:13 +00:00
class-wp-dependency.php
class-wp-duotone.php
class-wp-editor.php
class-wp-embed.php
class-wp-error.php
class-wp-exception.php Code Modernization: Fix trigger_error() with E_USER_ERROR deprecation in wp_trigger_error(). 2024-09-27 19:28:14 +00:00
class-wp-fatal-error-handler.php
class-wp-feed-cache-transient.php
class-wp-feed-cache.php
class-wp-hook.php
class-wp-http-cookie.php
class-wp-http-curl.php
class-wp-http-encoding.php
class-wp-http-ixr-client.php
class-wp-http-proxy.php
class-wp-http-requests-hooks.php
class-wp-http-requests-response.php
class-wp-http-response.php
class-wp-http-streams.php
class-wp-http.php Docs: Various docblock improvements and corrections. 2024-09-11 12:08:19 +00:00
class-wp-image-editor-gd.php
class-wp-image-editor-imagick.php Media: improve speed of AVIF image generation. 2024-09-17 23:29:29 +00:00
class-wp-image-editor.php Media: Automatically convert HEIC images to JPEG 2024-08-05 04:13:15 +00:00
class-wp-list-util.php
class-wp-locale-switcher.php
class-wp-locale.php
class-wp-matchesmapregex.php
class-wp-meta-query.php
class-wp-metadata-lazyloader.php
class-wp-navigation-fallback.php
class-wp-network-query.php
class-wp-network.php Networks and Sites: Set WP_Network properties via setters upon creation. 2024-09-13 22:12:15 +00:00
class-wp-object-cache.php Coding Standards: Remove unused return value for WP_Object_Cache::__set(). 2024-09-19 12:12:16 +00:00
class-wp-oembed-controller.php
class-wp-oembed.php
class-wp-paused-extensions-storage.php Options, Meta APIs: Explicitly pass $autoload parameter to when potentially adding new options. 2024-09-03 18:19:14 +00:00
class-wp-plugin-dependencies.php
class-wp-post-type.php
class-wp-post.php
class-wp-query.php
class-wp-recovery-mode-cookie-service.php
class-wp-recovery-mode-email-service.php
class-wp-recovery-mode-key-service.php Options, Meta APIs: Explicitly pass $autoload parameter to when potentially adding new options. 2024-09-03 18:19:14 +00:00
class-wp-recovery-mode-link-service.php
class-wp-recovery-mode.php
class-wp-rewrite.php
class-wp-role.php
class-wp-roles.php Options, Meta APIs: Explicitly pass $autoload parameter to when potentially adding new options. 2024-09-03 18:19:14 +00:00
class-wp-script-modules.php Script Loader: Add @wordpress/a11y as a Script Module. 2024-09-25 16:51:16 +00:00
class-wp-scripts.php Code Quality: Clarify variable names in dependency classes. 2024-08-10 23:00:14 +00:00
class-wp-session-tokens.php
class-wp-simplepie-file.php
class-wp-simplepie-sanitize-kses.php
class-wp-site-query.php Docs: Various docblock improvements and corrections. 2024-09-11 12:08:19 +00:00
class-wp-site.php
class-wp-styles.php Code Quality: Clarify variable names in dependency classes. 2024-08-10 23:00:14 +00:00
class-wp-tax-query.php
class-wp-taxonomy.php
class-wp-term-query.php Taxonomy: Remove redundant $taxonomies value from cache keys used for WP_Term_Query. 2024-09-17 17:00:14 +00:00
class-wp-term.php
class-wp-text-diff-renderer-inline.php
class-wp-text-diff-renderer-table.php
class-wp-textdomain-registry.php
class-wp-theme-json-data.php
class-wp-theme-json-resolver.php Block themes: Enable block-level background image styles 2024-07-24 00:26:14 +00:00
class-wp-theme-json-schema.php
class-wp-theme-json.php Background images: resolve theme.json dynamic ref values and ensure appropriate style default values 2024-08-26 05:40:16 +00:00
class-wp-theme.php Options, Meta APIs: Explicitly pass $autoload parameter to when potentially adding new options. 2024-09-03 18:19:14 +00:00
class-wp-token-map.php HTML API: Add PHP type annotations. 2024-07-19 23:44:16 +00:00
class-wp-user-meta-session-tokens.php
class-wp-user-query.php
class-wp-user-request.php
class-wp-user.php
class-wp-walker.php General: Cast $max_depth and $depth to an integer in the Walker class. 2024-07-26 07:56:13 +00:00
class-wp-widget-factory.php
class-wp-widget.php
class-wp-xmlrpc-server.php
class-wp.php Canonical: Redirect when front page's paginated states not found. 2024-09-25 19:37:19 +00:00
class-wpdb.php Code Modernization: handle mysqli_ping() deprecation in wpdb::check_connection(). 2024-09-19 18:56:16 +00:00
class.wp-dependencies.php
class.wp-scripts.php
class.wp-styles.php
comment-template.php Comments: Only type cast a scalar $comment_id in get_comment_author_link(). 2024-07-25 22:38:16 +00:00
comment.php General: Remove noopener from links opening in a new tab. 2024-09-30 05:19:16 +00:00
compat.php Bootstrap/Load: Give more context and warning about editing compat.php. 2024-09-17 23:50:12 +00:00
cron.php Options, Meta APIs: Explicitly pass $autoload parameter to when potentially adding new options. 2024-09-03 18:19:14 +00:00
date.php
default-constants.php Coding Standards: Use a human-readable constant in the check for max memory limit. 2024-08-26 20:57:13 +00:00
default-filters.php General: Remove noopener from links opening in a new tab. 2024-09-30 05:19:16 +00:00
default-widgets.php
deprecated.php Bootstrap/Load: Ensure uses of set_time_limit are documented why. 2024-09-17 22:41:13 +00:00
embed-template.php
embed.php
error-protection.php
feed-atom-comments.php
feed-atom.php
feed-rdf.php
feed-rss2-comments.php
feed-rss2.php
feed-rss.php
feed.php
fonts.php
formatting.php General: Remove noopener from links opening in a new tab. 2024-09-30 05:19:16 +00:00
functions.php General: Remove noopener from links opening in a new tab. 2024-09-30 05:19:16 +00:00
functions.wp-scripts.php
functions.wp-styles.php
general-template.php Docs: Remove the @ignore tag for _wp_render_title_tag(). 2024-09-11 13:27:12 +00:00
global-styles-and-settings.php Block themes: Enable block-level background image styles 2024-07-24 00:26:14 +00:00
http.php Docs: Various docblock improvements and corrections. 2024-09-11 12:08:19 +00:00
https-detection.php
https-migration.php
kses.php KSES: Add opacity to the list of safe CSS properties. 2024-07-12 03:36:15 +00:00
l10n.php I18N: Emit warnings if loading translations too early. 2024-09-30 15:30:20 +00:00
link-template.php Accessibility: Clarify aria-label in pagination links. 2024-09-28 23:36:13 +00:00
load.php Code Modernization: Simplify a conditional in wp_is_ini_value_changeable(). 2024-07-06 15:07:08 +00:00
locale.php
media-template.php General: Remove noopener from links opening in a new tab. 2024-09-30 05:19:16 +00:00
media.php Media: Add short-circuit filter to attachment_url_to_postid(). 2024-09-30 03:19:17 +00:00
meta.php Meta: Add label argument to register_meta function 2024-09-16 11:33:38 +00:00
ms-blogs.php
ms-default-constants.php
ms-default-filters.php
ms-deprecated.php
ms-files.php
ms-functions.php Options, Meta APIs: Explicitly pass $autoload parameter to when potentially adding new options. 2024-09-03 18:19:14 +00:00
ms-load.php
ms-network.php
ms-settings.php
ms-site.php Docs: Various docblock improvements and corrections. 2024-09-11 12:08:19 +00:00
nav-menu-template.php
nav-menu.php Menus: Check if taxonomy term exists in wp_update_nav_menu_item(). 2024-08-05 19:00:19 +00:00
option.php Docs: Correct the first parameter name for the pre_site_option_{$option} filter. 2024-09-04 21:10:14 +00:00
pluggable-deprecated.php
pluggable.php I18N: Switch locale to admin locale when sending admin notifications. 2024-09-30 15:52:15 +00:00
plugin.php
post-formats.php
post-template.php Docs: Correct documentation for the_password_form hook. 2024-08-03 18:32:14 +00:00
post-thumbnail-template.php
post.php Docs: Add missing @since and @param annotations for the edit_post_{$field} hook doc. 2024-09-18 06:04:10 +00:00
query.php
registration-functions.php
registration.php
rest-api.php REST API: Allow posts to be published with a publication date of midnight 1970-01-01. 2024-09-17 23:24:12 +00:00
revision.php Docs: Correct documentation for _wp_preview_meta_filter(). 2024-07-15 01:59:16 +00:00
rewrite.php Docs: The $feedname parameter in add_feed() should not start with an underscore. 2024-09-18 19:08:11 +00:00
robots-template.php
rss-functions.php
rss.php Code Modernization: Remove xml_set_object() in MagpieRSS::__construct(). 2024-09-18 21:40:12 +00:00
script-loader.php External Libraries: Update the Moment library to version 2.30.1. 2024-09-30 16:14:22 +00:00
script-modules.php Build: Prepare for more Script Modules 2024-09-24 07:35:17 +00:00
session.php
shortcodes.php
sitemaps.php
spl-autoload-compat.php
style-engine.php
taxonomy.php Docs: Further clarify return results for a non-existing ID in metadata functions. 2024-09-01 18:30:16 +00:00
template-canvas.php
template-loader.php
template.php
theme-i18n.json
theme-previews.php
theme-templates.php
theme.json
theme.php Options, Meta APIs: Explicitly pass $autoload parameter to when potentially adding new options. 2024-09-03 18:19:14 +00:00
update.php Upgrade/Install: Indicate HEIC support when checking upgrades. 2024-09-13 05:23:22 +00:00
user.php Code Standards: Correct @since reference in get_user(). 2024-09-28 23:20:17 +00:00
vars.php
version.php Editor: Allow registering PHP manifest file for block metadata collections for enhanced performance. 2024-09-30 17:08:26 +00:00
widgets.php
wp-db.php
wp-diff.php Code Modernization: Fix trigger_error() with E_USER_ERROR deprecation in Text_Diff::_check(). 2024-09-27 17:53:19 +00:00