[wp-trac] [WordPress Trac] #59412: Blocks: Add post-block callback arg to `traverse_and_serialize_block(s)`, change signature
WordPress Trac
noreply at wordpress.org
Wed Sep 20 16:42:52 UTC 2023
#59412: Blocks: Add post-block callback arg to `traverse_and_serialize_block(s)`,
change signature
--------------------------------------+------------------------------
Reporter: Bernhard Reiter | Owner: Bernhard Reiter
Type: enhancement | Status: assigned
Priority: normal | Milestone: 6.4
Component: General | Version:
Severity: normal | Resolution:
Keywords: has-patch has-unit-tests | Focuses:
--------------------------------------+------------------------------
Description changed by Bernhard Reiter:
Old description:
> While working on #59399, I [https://github.com/WordPress/wordpress-
> develop/pull/5247#discussion_r1331151853 discovered] that sibling block
> insertion wasn't likely going to work the way I had planned. As a
> consequence, I had to come up with a new way to make it work. This
> requires some changes to `traverse_and_serialize_block(s)`.
>
> Basically, we need to:
> - Change the signature of the existing callback such that:
> - the function arguments are a ''reference'' to the current block (so
> it can be modified inline, which is important e.g. for `theme` attribute
> insertion), the parent block, and the previous block (instead of the
> block index and chunk index);
> - the return value is a string that will be prepended to the result of
> the inner block traversal and serialization.
> - Add a second callback argument to `traverse_and_serialize_block`, which
> is called _after_ the current inner block is traversed and serialized.
> - Its function arguments are a reference to the current block, the
> parent block, and the next block.
>
> Its usage is demonstrated in [https://github.com/WordPress/wordpress-
> develop/pull/5261 PR 5261]: The callback arguments are now sufficient to
> insert the serialized hooked blocks as strings, rather than via
> `insert_inner_block`, `prepend_inner block`, or `append_inner_block`.
> (The latter -- which have been introduced only recently, in [56618] --
> are thus going to be obsolete.)
New description:
While working on #59399, I [https://github.com/WordPress/wordpress-
develop/pull/5247#discussion_r1331151853 discovered] that sibling block
insertion wasn't likely going to work the way I had planned. As a
consequence, I had to come up with a new way to make it work. This
requires some changes to `traverse_and_serialize_block(s)`.
Basically, we need to:
- Change the signature of the existing callback such that:
- the function arguments are a ''reference'' to the current block (so it
can be modified inline, which is important e.g. for `theme` attribute
insertion), the parent block, and the previous block (instead of the block
index and chunk index);
- the return value is a string that will be prepended to the result of
the inner block traversal and serialization.
- Add a second callback argument to `traverse_and_serialize_block`, which
is called _after_ the current inner block is traversed and serialized.
- Its function arguments are a reference to the current block, the
parent block, and the next block.
Its usage is demonstrated in [https://github.com/WordPress/wordpress-
develop/pull/5261 PR 5261]: The callback arguments are now sufficient to
insert the serialized hooked blocks as strings, rather than via
`insert_inner_block`, `prepend_inner_block`, or `append_inner_block`. (The
latter -- which have been introduced only recently, in [56618] -- are
thus going to be obsolete.)
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/59412#comment:2>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list