Make WordPress Core


Ignore:
Timestamp:
06/03/2024 12:03:53 PM (4 months ago)
Author:
Bernhard Reiter
Message:

Block Hooks: Move ignoredHookedBlocks metadata injection logic.

As of [57790], the Templates endpoint uses the rest_pre_insert_* filter to inject the ignoredHookedBlocks metadata attribute into anchor blocks, prior to persisting a template or template part to the database. The same principle was implemented for the Navigation endpoint (where additionally, first and last child blocks added at the top level are store in the wp_navigation post object's post meta). The required logic was added to the Navigation block's code, i.e. inside the Gutenberg code repository, and then synchronized to Core.

In order to harmonize the code between the two endpoints, this changeset introduces a new update_ignored_hooked_blocks_postmeta function, which is based on the Navigation block's block_core_navigation_update_ignore_hooked_blocks_meta, alongside a few helper functions, and hooks it to the rest_pre_insert_wp_navigation filter hook. (The Navigation block has been prepared in [58275] to add an additional conditional to check for the new update_ignored_hooked_blocks_postmeta filter so there won't be any collisions.)

Eventually, this will allow to deprecate block_core_navigation_update_ignore_hooked_blocks_meta (and some related functions), and remove the relevant code from the Navigation block. It also paves the way for some other future changes, such as inserting a hooked block as a Template Part block's first or last child (#60854).

Props tomjcafferkey, bernhard-reiter.
Fixes #60759.

File:
1 edited

Legend:

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

    r58268 r58291  
    16001600    }
    16011601
    1602     $before_block_visitor = make_before_block_visitor( $hooked_blocks, $template, 'set_ignored_hooked_blocks_metadata' );
    1603     $after_block_visitor  = make_after_block_visitor( $hooked_blocks, $template, 'set_ignored_hooked_blocks_metadata' );
    1604 
    1605     $blocks                = parse_blocks( $changes->post_content );
    1606     $changes->post_content = traverse_and_serialize_blocks( $blocks, $before_block_visitor, $after_block_visitor );
     1602    $changes->post_content = apply_block_hooks_to_content( $changes->post_content, $template, 'set_ignored_hooked_blocks_metadata' );
    16071603
    16081604    return $changes;
Note: See TracChangeset for help on using the changeset viewer.