WordPress 6.1 also comes with a considerable performance improvement for handling blocks in plugins and in the WordPress backend (PHP The web scripting language in which WordPress is primarily architected. WordPress requires PHP 7.4 or higher).
Early block.json
Registration Method
Starting with WordPress 5.8, extenders were encouraged to begin to utilize block.json
to register blocks through a unified registration process. The benefits offered by this update provide consistency and convenience when registering blocks through PHP or JavaScript JavaScript or JS is an object-oriented computer programming language commonly used to create interactive effects within web browsers. WordPress makes extensive use of JS for a better user experience. While PHP is executed on the server, JS executes within a user’s browser. https://www.javascript.com/..
However, while this block.json
scanning convention is extremely convenient, it does add additional processing when core Core is the set of software required to run WordPress. The Core Development Team builds WordPress. blocks are instantiated. On each page load, block Block is the abstract term used to describe units of markup that, composed together, form the content or layout of a webpage using the WordPress editor. The idea combines concepts of what in the past may have achieved with shortcodes, custom HTML, and embed discovery into a single consistent API and user experience. registration undergoes the following steps:
- Scan folders for
block.json
files.
- When a
block.json
file is found, read its contents into memory.
- Call
json_decode
on the file contents to convert it to a PHP array.
- Register the block using the decoded data.
With over 70 core block files to scan and load, this presented an opportunity for optimization.
Core Block Registration Update
To reduce filesystem reads and processing of block.json
files, which should benefit all WordPress sites and improve performance, block registration has been updated to:
- Introduce a new Grunt task (
copy:block-json
) that scans and converts core block.json
files to PHP arrays and stores them in a single blocks-json.php
at build time.
- Use the new
blocks-json.php
file in the register_block_type_from_metadata()
function.
- Assign the block registration data to a static variable (cache) so that it’s only loaded once per request.
The addition of an extra build task to compile the decoded JSON JSON, or JavaScript Object Notation, is a minimal, readable format for structuring data. It is used primarily to transmit data between a server and web application, as an alternative to XML. data to PHP reduces block registration filesystem reads from ~70 files to just a single file. And since blocks-json.php
is a native PHP array, it can be used directly without additional conversion.
The conversion from block.json
files to PHP arrays is achieved through the json2php
package, which is already utilized in Core and Gutenberg The Gutenberg project is the new Editor Interface for WordPress. The editor improves the process and experience of creating new content, making writing rich content much simpler. It uses ‘blocks’ to add richness rather than shortcodes, custom HTML etc. https://wordpress.org/gutenberg/.
References
Props to @aristath for source material and collaboration, and to @milana_cap for review of this dev note Each important change in WordPress Core is documented in a developers note, (usually called dev note). Good dev notes generally include a description of the change, the decision that led to this change, and a description of how developers are supposed to work with that change. Dev notes are published on Make/Core blog during the beta phase of WordPress release cycle. Publishing dev notes is particularly important when plugin/theme authors and WordPress developers need to be aware of those changes.In general, all dev notes are compiled into a Field Guide at the beginning of the release candidate phase..
#6-1, #dev-notes, #dev-notes-6-1, #performance