[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