Make WordPress Core


Ignore:
Timestamp:
09/21/2023 08:32:52 AM (3 years ago)
Author:
Bernhard Reiter
Message:

Blocks: Change traverse_and_serialize_block(s)'s callback signature.

During work on #59399, it was discovered that sibling block insertion wasn't likely going to work the way it was planned, which required devising an alternative solution. This new solution requires some changes to traverse_and_serialize_block(s):

  • Change the signature of the existing callback such that:
    • the return value is a string that will be prepended to the result of the inner block traversal and serialization;
    • 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).
  • Add a second callback argument to traverse_and_serialize_block(s), which is called after the block is traversed and serialized.
    • Its function arguments are a reference to the current block, the parent block, and the next block.

Props gziolo.
Fixes #59412. See #59313.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/block-template-utils.php

    r56621 r56644  
    516516 *
    517517 * @param array $block a parsed block.
    518  * @return array Updated block.
    519  */
    520 function _inject_theme_attribute_in_template_part_block( $block ) {
     518 * @return void
     519 */
     520function _inject_theme_attribute_in_template_part_block( &$block ) {
    521521    if (
    522522        'core/template-part' === $block['blockName'] &&
     
    525525        $block['attrs']['theme'] = get_stylesheet();
    526526    }
    527     return $block;
    528527}
    529528
Note: See TracChangeset for help on using the changeset viewer.