From 9750de5ca7e7210757cbc422330d08126f343ad1 Mon Sep 17 00:00:00 2001 From: Bernie Reiter Date: Tue, 11 Feb 2025 12:56:59 +0100 Subject: [PATCH 1/3] Block Hooks: Fix duplicated insertion in Post Content --- lib/compat/wordpress-6.8/blocks.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/compat/wordpress-6.8/blocks.php b/lib/compat/wordpress-6.8/blocks.php index 2b0fcd19e200e1..a84638754a669f 100644 --- a/lib/compat/wordpress-6.8/blocks.php +++ b/lib/compat/wordpress-6.8/blocks.php @@ -124,8 +124,13 @@ function gutenberg_insert_hooked_blocks_into_rest_response( $response, $post ) { return $response; } +remove_filter( 'rest_prepare_page', 'insert_hooked_blocks_into_rest_response' ); add_filter( 'rest_prepare_page', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 ); + +remove_filter( 'rest_prepare_post', 'insert_hooked_blocks_into_rest_response' ); add_filter( 'rest_prepare_post', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 ); + +remove_filter( 'rest_prepare_wp_block', 'insert_hooked_blocks_into_rest_response' ); add_filter( 'rest_prepare_wp_block', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 ); /** From cc74a060cce564079257e3bde1ef38d910087e00 Mon Sep 17 00:00:00 2001 From: Bernie Reiter Date: Thu, 13 Feb 2025 22:45:06 +0100 Subject: [PATCH 2/3] Add backport changelog --- backport-changelog/6.8/8212.md | 1 + 1 file changed, 1 insertion(+) diff --git a/backport-changelog/6.8/8212.md b/backport-changelog/6.8/8212.md index a4488d2da99f2b..30483af9e7b715 100644 --- a/backport-changelog/6.8/8212.md +++ b/backport-changelog/6.8/8212.md @@ -1,3 +1,4 @@ https://github.com/WordPress/wordpress-develop/pull/8212 * https://github.com/WordPress/gutenberg/pull/68926 +* https://github.com/WordPress/gutenberg/pull/69142 From 83af320e4e62ba4a5beab9d676f8a72b7f779b9e Mon Sep 17 00:00:00 2001 From: Bernie Reiter Date: Thu, 13 Feb 2025 22:47:13 +0100 Subject: [PATCH 3/3] Move function def and filters inside conditional --- lib/compat/wordpress-6.8/blocks.php | 92 ++++++++++++++--------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/lib/compat/wordpress-6.8/blocks.php b/lib/compat/wordpress-6.8/blocks.php index a84638754a669f..7fd4237bc81d37 100644 --- a/lib/compat/wordpress-6.8/blocks.php +++ b/lib/compat/wordpress-6.8/blocks.php @@ -77,61 +77,61 @@ function apply_block_hooks_to_content_from_post_object( $content, WP_Post $post add_filter( 'the_content', 'apply_block_hooks_to_content_from_post_object', 8 ); // Remove apply_block_hooks_to_content filter (previously added in Core). remove_filter( 'the_content', 'apply_block_hooks_to_content', 8 ); -} -/** - * Hooks into the REST API response for the Posts endpoint and adds the first and last inner blocks. - * - * @since 6.6.0 - * @since 6.8.0 Support non-`wp_navigation` post types. - * - * @param WP_REST_Response $response The response object. - * @param WP_Post $post Post object. - * @return WP_REST_Response The response object. - */ -function gutenberg_insert_hooked_blocks_into_rest_response( $response, $post ) { - if ( empty( $response->data['content']['raw'] ) ) { - return $response; - } + /** + * Hooks into the REST API response for the Posts endpoint and adds the first and last inner blocks. + * + * @since 6.6.0 + * @since 6.8.0 Support non-`wp_navigation` post types. + * + * @param WP_REST_Response $response The response object. + * @param WP_Post $post Post object. + * @return WP_REST_Response The response object. + */ + function gutenberg_insert_hooked_blocks_into_rest_response( $response, $post ) { + if ( empty( $response->data['content']['raw'] ) ) { + return $response; + } - $response->data['content']['raw'] = apply_block_hooks_to_content_from_post_object( - $response->data['content']['raw'], - $post, - 'insert_hooked_blocks_and_set_ignored_hooked_blocks_metadata' - ); + $response->data['content']['raw'] = apply_block_hooks_to_content_from_post_object( + $response->data['content']['raw'], + $post, + 'insert_hooked_blocks_and_set_ignored_hooked_blocks_metadata' + ); - // If the rendered content was previously empty, we leave it like that. - if ( empty( $response->data['content']['rendered'] ) ) { - return $response; - } + // If the rendered content was previously empty, we leave it like that. + if ( empty( $response->data['content']['rendered'] ) ) { + return $response; + } - // No need to inject hooked blocks twice. - $priority = has_filter( 'the_content', 'apply_block_hooks_to_content_from_post_object' ); - if ( false !== $priority ) { - remove_filter( 'the_content', 'apply_block_hooks_to_content_from_post_object', $priority ); - } + // No need to inject hooked blocks twice. + $priority = has_filter( 'the_content', 'apply_block_hooks_to_content_from_post_object' ); + if ( false !== $priority ) { + remove_filter( 'the_content', 'apply_block_hooks_to_content_from_post_object', $priority ); + } - /** This filter is documented in wp-includes/post-template.php */ - $response->data['content']['rendered'] = apply_filters( - 'the_content', - $response->data['content']['raw'] - ); + /** This filter is documented in wp-includes/post-template.php */ + $response->data['content']['rendered'] = apply_filters( + 'the_content', + $response->data['content']['raw'] + ); - // Add back the filter. - if ( false !== $priority ) { - add_filter( 'the_content', 'apply_block_hooks_to_content_from_post_object', $priority ); - } + // Add back the filter. + if ( false !== $priority ) { + add_filter( 'the_content', 'apply_block_hooks_to_content_from_post_object', $priority ); + } - return $response; -} -remove_filter( 'rest_prepare_page', 'insert_hooked_blocks_into_rest_response' ); -add_filter( 'rest_prepare_page', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 ); + return $response; + } + remove_filter( 'rest_prepare_page', 'insert_hooked_blocks_into_rest_response' ); + add_filter( 'rest_prepare_page', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 ); -remove_filter( 'rest_prepare_post', 'insert_hooked_blocks_into_rest_response' ); -add_filter( 'rest_prepare_post', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 ); + remove_filter( 'rest_prepare_post', 'insert_hooked_blocks_into_rest_response' ); + add_filter( 'rest_prepare_post', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 ); -remove_filter( 'rest_prepare_wp_block', 'insert_hooked_blocks_into_rest_response' ); -add_filter( 'rest_prepare_wp_block', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 ); + remove_filter( 'rest_prepare_wp_block', 'insert_hooked_blocks_into_rest_response' ); + add_filter( 'rest_prepare_wp_block', 'gutenberg_insert_hooked_blocks_into_rest_response', 10, 2 ); +} /** * Updates the wp_postmeta with the list of ignored hooked blocks