diff --git a/wp-includes/blocks.php b/wp-includes/blocks.php index 81207da795..edd30478af 100644 --- a/wp-includes/blocks.php +++ b/wp-includes/blocks.php @@ -897,7 +897,7 @@ function insert_hooked_blocks( &$parsed_anchor_block, $relative_position, $hooke * * @since 6.5.0 * - * @param array $parsed_hooked_block The parsed block array for the given hooked block type. + * @param array|null $parsed_hooked_block The parsed block array for the given hooked block type, or null to suppress the block. * @param string $hooked_block_type The hooked block type name. * @param string $relative_position The relative position of the hooked block. * @param array $parsed_anchor_block The anchor block, in parsed block array format. @@ -913,7 +913,7 @@ function insert_hooked_blocks( &$parsed_anchor_block, $relative_position, $hooke * * @since 6.5.0 * - * @param array $parsed_hooked_block The parsed block array for the given hooked block type. + * @param array|null $parsed_hooked_block The parsed block array for the given hooked block type, or null to suppress the block. * @param string $hooked_block_type The hooked block type name. * @param string $relative_position The relative position of the hooked block. * @param array $parsed_anchor_block The anchor block, in parsed block array format. @@ -922,6 +922,10 @@ function insert_hooked_blocks( &$parsed_anchor_block, $relative_position, $hooke */ $parsed_hooked_block = apply_filters( "hooked_block_{$hooked_block_type}", $parsed_hooked_block, $hooked_block_type, $relative_position, $parsed_anchor_block, $context ); + if ( null === $parsed_hooked_block ) { + continue; + } + // It's possible that the filter returned a block of a different type, so we explicitly // look for the original `$hooked_block_type` in the `ignoredHookedBlocks` metadata. if ( @@ -962,6 +966,25 @@ function set_ignored_hooked_blocks_metadata( &$parsed_anchor_block, $relative_po return ''; } + foreach ( $hooked_block_types as $index => $hooked_block_type ) { + $parsed_hooked_block = array( + 'blockName' => $hooked_block_type, + 'attrs' => array(), + 'innerBlocks' => array(), + 'innerContent' => array(), + ); + + /** This filter is documented in wp-includes/blocks.php */ + $parsed_hooked_block = apply_filters( 'hooked_block', $parsed_hooked_block, $hooked_block_type, $relative_position, $parsed_anchor_block, $context ); + + /** This filter is documented in wp-includes/blocks.php */ + $parsed_hooked_block = apply_filters( "hooked_block_{$hooked_block_type}", $parsed_hooked_block, $hooked_block_type, $relative_position, $parsed_anchor_block, $context ); + + if ( null === $parsed_hooked_block ) { + unset( $hooked_block_types[ $index ] ); + } + } + $previously_ignored_hooked_blocks = isset( $parsed_anchor_block['attrs']['metadata']['ignoredHookedBlocks'] ) ? $parsed_anchor_block['attrs']['metadata']['ignoredHookedBlocks'] : array(); diff --git a/wp-includes/version.php b/wp-includes/version.php index dd7513cd78..0b8d2f9e98 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -16,7 +16,7 @@ * * @global string $wp_version */ -$wp_version = '6.5-beta1-57667'; +$wp_version = '6.5-beta1-57668'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.