mirror of
https://github.com/WordPress/WordPress.git
synced 2024-12-23 01:27:36 +01:00
Block Hooks: Move Posts controller hooked blocks injection logic.
In a similar vein as [58291], this changeset introduces a new `insert_hooked_blocks_into_rest_response` function and hooks it to the `rest_prepare_wp_navigation` filter. This is part of an ongoing effort to move Block Hooks related code out of the Navigation block. Specifically, `insert_hooked_blocks_into_rest_response` is based on `block_core_navigation_insert_hooked_blocks_into_rest_response`. Eventually, it will be possible to deprecate the latter. Follow-up to [58291]. See #60759. Built from https://develop.svn.wordpress.org/trunk@58292 git-svn-id: http://core.svn.wordpress.org/trunk@57752 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
b62b7a599e
commit
cdbb9bf2b4
@ -1135,6 +1135,47 @@ function insert_hooked_blocks_and_set_ignored_hooked_blocks_metadata( &$parsed_a
|
|||||||
return $markup;
|
return $markup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hooks into the REST API response for the core/navigation block and adds the first and last inner blocks.
|
||||||
|
*
|
||||||
|
* @since 6.6.0
|
||||||
|
*
|
||||||
|
* @param WP_REST_Response $response The response object.
|
||||||
|
* @param WP_Post $post Post object.
|
||||||
|
* @return WP_REST_Response The response object.
|
||||||
|
*/
|
||||||
|
function insert_hooked_blocks_into_rest_response( $response, $post ) {
|
||||||
|
if ( ! isset( $response->data['content']['raw'] ) || ! isset( $response->data['content']['rendered'] ) ) {
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
|
$attributes = array();
|
||||||
|
$ignored_hooked_blocks = get_post_meta( $post->ID, '_wp_ignored_hooked_blocks', true );
|
||||||
|
if ( ! empty( $ignored_hooked_blocks ) ) {
|
||||||
|
$ignored_hooked_blocks = json_decode( $ignored_hooked_blocks, true );
|
||||||
|
$attributes['metadata'] = array(
|
||||||
|
'ignoredHookedBlocks' => $ignored_hooked_blocks,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$content = get_comment_delimited_block_content(
|
||||||
|
'core/navigation',
|
||||||
|
$attributes,
|
||||||
|
$response->data['content']['raw']
|
||||||
|
);
|
||||||
|
|
||||||
|
$content = apply_block_hooks_to_content( $content, $post );
|
||||||
|
|
||||||
|
// Remove mock Navigation block wrapper.
|
||||||
|
$content = remove_serialized_parent_block( $content );
|
||||||
|
|
||||||
|
$response->data['content']['raw'] = $content;
|
||||||
|
|
||||||
|
/** This filter is documented in wp-includes/post-template.php */
|
||||||
|
$response->data['content']['rendered'] = apply_filters( 'the_content', $content );
|
||||||
|
|
||||||
|
return $response;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a function that injects the theme attribute into, and hooked blocks before, a given block.
|
* Returns a function that injects the theme attribute into, and hooked blocks before, a given block.
|
||||||
*
|
*
|
||||||
|
@ -760,4 +760,7 @@ add_filter( 'rest_pre_insert_wp_template_part', 'inject_ignored_hooked_blocks_me
|
|||||||
// Update ignoredHookedBlocks postmeta for wp_navigation post type.
|
// Update ignoredHookedBlocks postmeta for wp_navigation post type.
|
||||||
add_filter( 'rest_pre_insert_wp_navigation', 'update_ignored_hooked_blocks_postmeta' );
|
add_filter( 'rest_pre_insert_wp_navigation', 'update_ignored_hooked_blocks_postmeta' );
|
||||||
|
|
||||||
|
// Inject hooked blocks into the wp_navigation post type REST response.
|
||||||
|
add_filter( 'rest_prepare_wp_navigation', 'insert_hooked_blocks_into_rest_response', 10, 2 );
|
||||||
|
|
||||||
unset( $filter, $action );
|
unset( $filter, $action );
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
*
|
*
|
||||||
* @global string $wp_version
|
* @global string $wp_version
|
||||||
*/
|
*/
|
||||||
$wp_version = '6.6-alpha-58291';
|
$wp_version = '6.6-alpha-58292';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||||
|
Loading…
Reference in New Issue
Block a user