[wp-trac] [WordPress Trac] #62069: Block Bindings: block doesn't receive full __default bindings during render
WordPress Trac
noreply at wordpress.org
Wed Sep 18 09:40:08 UTC 2024
#62069: Block Bindings: block doesn't receive full __default bindings during render
--------------------------+----------------------------------------
Reporter: talldanwp | Owner: talldanwp
Type: defect (bug) | Status: assigned
Priority: normal | Milestone: 6.7
Component: Editor | Version: 6.6
Severity: normal | Keywords: has-patch needs-unit-tests
Focuses: |
--------------------------+----------------------------------------
Original gutenberg issue -
https://github.com/WordPress/gutenberg/issues/64688
TLDR - some image block features don't work correctly when the image is
using a pattern override due to some missing block bindings code in core.
----
Longer explanation:
The pattern overrides feature is built upon block bindings, and uses a
special `__default` binding that means all block attributes that support
binding are bound:
{{{#!js
bindings: {
__default: 'core/pattern-overrides'
}
}}}
During processing of the bindings, this single `__default` binding is
replaced with the individual binding attributes - e.g.:
{{{#!js
bindings: {
src: 'core/pattern-overrides',
id: 'core/pattern-overrides',
caption: 'core/pattern-overrides',
}
}}}
In the gutenberg plugin these individual bindings are assigned back to the
block before rendering so that the block can reason about which individual
attributes are bound:
https://github.com/WordPress/gutenberg/blob/98b8d415830fa9ebf7b4b0a2b95d65b9fd1e813a/lib/compat/wordpress-6.6/blocks.php#L40
This allows blocks like the image block to check whether an individual
attribute, like `id` has a binding:
https://github.com/WordPress/gutenberg/blob/98b8d415830fa9ebf7b4b0a2b95d65b9fd1e813a/packages
/block-library/src/image/index.php#L31
Unfortunately core doesn't have the same logic to assign the individual
bindings back to the block before rendering, which means the image block's
logic fails. Any block that renders just receives the individual
`__default` binding.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/62069>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list