Patterns, Templates: Inject `theme` attr into Template Part blocks.
It was found that Template Part blocks were broken in the Site Editor, showing the `Template part has been deleted or is unavailable` message, due to a missing `theme` attribute. This bug seems to have been introduced by [56896], whose goal was to only inject that attribute into the markup returned by the templates and patterns REST API endpoints but not on the frontend, in order to improve performance. It has been demonstrated locally that reverting that changeset fixes the bug. Reverts [56896]. Props mmcalister, swisspidy, thelovelist, hellofromTonya, pbiron, Pauthake015, richtabor, nicolefurlan, huzaifaalmesbah, annezazu, kafleg, aegkr, sunitarai, shresthaaman, andraganescu, onemaggie, gziolo. Fixes #59629. Built from https://develop.svn.wordpress.org/trunk@56960 git-svn-id: http://core.svn.wordpress.org/trunk@56471 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
3d5cf30808
commit
c054eef096
|
@ -547,18 +547,15 @@ function _build_block_template_result_from_file( $template_file, $template_type
|
|||
$template->area = $template_file['area'];
|
||||
}
|
||||
|
||||
$before_block_visitor = ( defined( 'REST_REQUEST' ) && REST_REQUEST ) ? '_inject_theme_attribute_in_template_part_block' : null;
|
||||
$before_block_visitor = '_inject_theme_attribute_in_template_part_block';
|
||||
$after_block_visitor = null;
|
||||
$hooked_blocks = get_hooked_blocks();
|
||||
if ( ! empty( $hooked_blocks ) || has_filter( 'hooked_block_types' ) ) {
|
||||
$before_block_visitor = make_before_block_visitor( $hooked_blocks, $template );
|
||||
$after_block_visitor = make_after_block_visitor( $hooked_blocks, $template );
|
||||
}
|
||||
if ( null !== $before_block_visitor || null !== $after_block_visitor ) {
|
||||
$blocks = parse_blocks( $template_content );
|
||||
$template_content = traverse_and_serialize_blocks( $blocks, $before_block_visitor, $after_block_visitor );
|
||||
}
|
||||
$template->content = $template_content;
|
||||
$template->content = traverse_and_serialize_blocks( $blocks, $before_block_visitor, $after_block_visitor );
|
||||
|
||||
return $template;
|
||||
}
|
||||
|
|
|
@ -779,9 +779,7 @@ function make_before_block_visitor( $hooked_blocks, $context ) {
|
|||
* @return string The serialized markup for the given block, with the markup for any hooked blocks prepended to it.
|
||||
*/
|
||||
return function ( &$block, $parent_block = null, $prev = null ) use ( $hooked_blocks, $context ) {
|
||||
if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) {
|
||||
_inject_theme_attribute_in_template_part_block( $block );
|
||||
}
|
||||
|
||||
$markup = '';
|
||||
|
||||
|
|
|
@ -165,16 +165,14 @@ final class WP_Block_Patterns_Registry {
|
|||
private function prepare_content( $pattern, $hooked_blocks ) {
|
||||
$content = $pattern['content'];
|
||||
|
||||
$before_block_visitor = ( defined( 'REST_REQUEST' ) && REST_REQUEST ) ? '_inject_theme_attribute_in_template_part_block' : null;
|
||||
$before_block_visitor = '_inject_theme_attribute_in_template_part_block';
|
||||
$after_block_visitor = null;
|
||||
if ( ! empty( $hooked_blocks ) || has_filter( 'hooked_block_types' ) ) {
|
||||
$before_block_visitor = make_before_block_visitor( $hooked_blocks, $pattern );
|
||||
$after_block_visitor = make_after_block_visitor( $hooked_blocks, $pattern );
|
||||
}
|
||||
if ( null !== $before_block_visitor || null !== $after_block_visitor ) {
|
||||
$blocks = parse_blocks( $content );
|
||||
$content = traverse_and_serialize_blocks( $blocks, $before_block_visitor, $after_block_visitor );
|
||||
}
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
*
|
||||
* @global string $wp_version
|
||||
*/
|
||||
$wp_version = '6.4-beta4-56959';
|
||||
$wp_version = '6.4-beta4-56960';
|
||||
|
||||
/**
|
||||
* Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.
|
||||
|
|
Loading…
Reference in New Issue