[wp-trac] [WordPress Trac] #61280: Block Variations: Allow server-side registration via variations.php or .json
WordPress Trac
noreply at wordpress.org
Thu May 23 12:46:11 UTC 2024
#61280: Block Variations: Allow server-side registration via variations.php or
.json
-----------------------------+--------------------
Reporter: Bernhard Reiter | Owner: (none)
Type: enhancement | Status: new
Priority: normal | Milestone: 6.6
Component: General | Version:
Severity: normal | Keywords:
Focuses: |
-----------------------------+--------------------
As of WordPress 6.5, the [https://make.wordpress.org/core/2024/02/29
/performance-improvements-for-registering-block-variations-with-callbacks/
recommended way to register Block Variations for a given block] is via its
`variations_callback`:
{{{
register_block_type_from_metadata(
__DIR__ . '/template-part',
array(
'render_callback' => 'render_block_core_template_part',
'variation_callback' => 'build_template_part_block_variations',
)
);
}}}
As the above example shows, this is somewhat similar to adding a
`render_callback` for a dynamic block. The latter can alternatively be
provided via a single PHP file -- typically called `render.php` -- that is
[https://make.wordpress.org/core/2022/10/12/block-api-changes-in-
wordpress-6-1/ specified via the `render` field in `block.json`].
=== `variations.php`
For developer experience, it would thus be beneficial to add a
`variations` field to `block.json` that can be set to point to a PHP file
that registers all known variations of that block.
=== `variations.json`
As a potential stretch goal, it might be possible to point it to a JSON
file instead, as some variations are statically defined (and don't need to
run any PHP code). In those cases, they are currently often defined on the
client side (see e.g.
[https://github.com/WordPress/gutenberg/blob/f49e0b5958adad9fbd211d5ded07b4cabf5bfec3/packages
/block-library/src/social-link/variations.js Social Icon block
variations]).
As we're working to expand Block Variations to be better integrated and
supported on the server side (e.g. [https://github.com/WordPress
/wordpress-develop/pull/6602 automatic class name generation for block
variations]), they will need to be registered there to fully benefit from
those new, server-side, features. Allowing a JSON format will enable block
authors to migrate existing ("static") JS files that they use for
variation registration more easily.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/61280>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list