mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-22 17:18:32 +01:00
Block Hooks: Refactor controller filter to use meta_input.
Prior to this changeset, the function `update_ignored_hooked_blocks_postmeta()` used the core function `update_post_meta()` to write `_wp_ignored_hooked_blocks` data to the database during an operation that is preparing a post to be inserted. Since we have access to the incoming changes that are being prepared we can remove this database operation in favour of writing the data to the post object provided under `meta_input`. Doing this means two things: 1. It allows us to store postmeta for new posts that are about to be created since they don't have an `ID` yet (which is information `update_post_meta()` needs). 2. The core controller will take care of updating postmeta in a more predictable pattern. Props tomjcafferkey, bernhard-reiter. Fixes #61495. Built from https://develop.svn.wordpress.org/trunk@58578 git-svn-id: http://core.svn.wordpress.org/trunk@58025 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
0c56c3f7dd
commit
3f2b674b36
@ -1095,7 +1095,10 @@ function update_ignored_hooked_blocks_postmeta( $post ) {
|
||||
$post->post_content
|
||||
);
|
||||
|
||||
$serialized_block = apply_block_hooks_to_content( $markup, get_post( $post->ID ), 'set_ignored_hooked_blocks_metadata' );
|
||||
$existing_post = get_post( $post->ID );
|
||||
// Merge the existing post object with the updated post object to pass to the block hooks algorithm for context.
|
||||
$context = (object) array_merge( (array) $existing_post, (array) $post );
|
||||
$serialized_block = apply_block_hooks_to_content( $markup, $context, 'set_ignored_hooked_blocks_metadata' );
|
||||
$root_block = parse_blocks( $serialized_block )[0];
|
||||
|
||||
$ignored_hooked_blocks = isset( $root_block['attrs']['metadata']['ignoredHookedBlocks'] )
|
||||
@ -1108,7 +1111,11 @@ function update_ignored_hooked_blocks_postmeta( $post ) {
|
||||
$existing_ignored_hooked_blocks = json_decode( $existing_ignored_hooked_blocks, true );
|
||||
$ignored_hooked_blocks = array_unique( array_merge( $ignored_hooked_blocks, $existing_ignored_hooked_blocks ) );
|
||||
}
|
||||
update_post_meta( $post->ID, '_wp_ignored_hooked_blocks', json_encode( $ignored_hooked_blocks ) );
|
||||
|
||||
if ( ! isset( $post->meta_input ) ) {
|
||||
$post->meta_input = array();
|
||||
}
|
||||
$post->meta_input['_wp_ignored_hooked_blocks'] = json_encode( $ignored_hooked_blocks );
|
||||
}
|
||||
|
||||
$post->post_content = remove_serialized_parent_block( $serialized_block );
|
||||
|
@ -16,7 +16,7 @@
|
||||
*
|
||||
* @global string $wp_version
|
||||
*/
|
||||
$wp_version = '6.7-alpha-58577';
|
||||
$wp_version = '6.7-alpha-58578';
|
||||
|
||||
/**
|
||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||
|
Loading…
Reference in New Issue
Block a user