Changeset 57157
- Timestamp:
- 12/04/2023 08:24:33 PM (12 months ago)
- Location:
- trunk
- Files:
-
- 1 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/blocks.php
r57120 r57157 759 759 760 760 /** 761 * Conditionally returns the markup for a given hooked block type. 762 * 763 * Accepts two arguments: A reference to an anchor block, and the name of a hooked block type. 764 * If the anchor block has already been processed, and the given hooked block type is in the list 765 * of ignored hooked blocks, an empty string is returned. 766 * 767 * This function is meant for internal use only. 768 * 769 * @since 6.5.0 770 * @access private 771 * 772 * @param array $anchor_block The anchor block. Passed by reference. 773 * @param string $hooked_block_type The name of the hooked block type. 774 * @return string The markup for the given hooked block type, or an empty string if the block is ignored. 775 */ 776 function get_hooked_block_markup( &$anchor_block, $hooked_block_type ) { 777 if ( ! isset( $anchor_block['attrs']['metadata']['ignoredHookedBlocks'] ) ) { 778 $anchor_block['attrs']['metadata']['ignoredHookedBlocks'] = array(); 779 } 780 781 if ( in_array( $hooked_block_type, $anchor_block['attrs']['metadata']['ignoredHookedBlocks'] ) ) { 782 return ''; 783 } 784 785 // The following is only needed for the REST API endpoint. 786 // However, its presence does not affect the frontend. 787 $anchor_block['attrs']['metadata']['ignoredHookedBlocks'][] = $hooked_block_type; 788 789 return get_comment_delimited_block_content( $hooked_block_type, array(), '' ); 790 } 791 792 /** 761 793 * Returns a function that injects the theme attribute into, and hooked blocks before, a given block. 762 794 * … … 814 846 $hooked_block_types = apply_filters( 'hooked_block_types', $hooked_block_types, $relative_position, $anchor_block_type, $context ); 815 847 foreach ( $hooked_block_types as $hooked_block_type ) { 816 $markup .= get_ comment_delimited_block_content( $hooked_block_type, array(), '');848 $markup .= get_hooked_block_markup( $parent_block, $hooked_block_type ); 817 849 } 818 850 } … … 827 859 $hooked_block_types = apply_filters( 'hooked_block_types', $hooked_block_types, $relative_position, $anchor_block_type, $context ); 828 860 foreach ( $hooked_block_types as $hooked_block_type ) { 829 $markup .= get_ comment_delimited_block_content( $hooked_block_type, array(), '');861 $markup .= get_hooked_block_markup( $block, $hooked_block_type ); 830 862 } 831 863 … … 875 907 $hooked_block_types = apply_filters( 'hooked_block_types', $hooked_block_types, $relative_position, $anchor_block_type, $context ); 876 908 foreach ( $hooked_block_types as $hooked_block_type ) { 877 $markup .= get_ comment_delimited_block_content( $hooked_block_type, array(), '');909 $markup .= get_hooked_block_markup( $block, $hooked_block_type ); 878 910 } 879 911 … … 889 921 $hooked_block_types = apply_filters( 'hooked_block_types', $hooked_block_types, $relative_position, $anchor_block_type, $context ); 890 922 foreach ( $hooked_block_types as $hooked_block_type ) { 891 $markup .= get_ comment_delimited_block_content( $hooked_block_type, array(), '');923 $markup .= get_hooked_block_markup( $parent_block, $hooked_block_type ); 892 924 } 893 925 } -
trunk/tests/phpunit/tests/blocks/getHookedBlocks.php
r56805 r57157 150 150 ); 151 151 $this->assertStringContainsString( 152 '<!-- wp:post-content {"layout":{"type":"constrained"} } /-->'152 '<!-- wp:post-content {"layout":{"type":"constrained"},"metadata":{"ignoredHookedBlocks":["tests/hooked-after"]}} /-->' 153 153 . '<!-- wp:tests/hooked-after /-->', 154 154 $template->content … … 177 177 $this->assertStringContainsString( 178 178 '<!-- wp:tests/hooked-before /-->' 179 . '<!-- wp:navigation {"layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"} } /-->',179 . '<!-- wp:navigation {"layout":{"type":"flex","setCascadingProperties":true,"justifyContent":"right"},"metadata":{"ignoredHookedBlocks":["tests/hooked-before"]}} /-->', 180 180 $template->content 181 181 ); … … 216 216 ); 217 217 $this->assertStringContainsString( 218 '<!-- wp:comments -->'218 '<!-- wp:comments {"metadata":{"ignoredHookedBlocks":["tests/hooked-first-child"]}} -->' 219 219 . '<div class="wp-block-comments">' 220 220 . '<!-- wp:tests/hooked-first-child /-->', -
trunk/tests/phpunit/tests/blocks/wpBlockPatternsRegistry.php
r57021 r57157 382 382 $pattern_three['content'] .= '<!-- wp:tests/my-block /-->'; 383 383 384 $expected = array(385 $pattern_one,386 $pattern_two,387 $pattern_three,388 );389 390 384 $registered = $this->registry->get_all_registered(); 391 $this->assertSame( $expected, $registered ); 385 $this->assertCount( 3, $registered ); 386 $this->assertStringEndsWith( '<!-- wp:tests/my-block /-->', $registered[1]['content'] ); 387 $this->assertStringContainsString( '"metadata":{"ignoredHookedBlocks":["tests/my-block"]}', $registered[1]['content'] ); 388 $this->assertStringEndsWith( '<!-- wp:tests/my-block /-->', $registered[2]['content'] ); 389 $this->assertStringContainsString( '"metadata":{"ignoredHookedBlocks":["tests/my-block"]}', $registered[2]['content'] ); 392 390 } 393 391 … … 445 443 $this->registry->register( 'test/two', $pattern_two ); 446 444 447 $pattern_one['name'] = 'test/one';448 $pattern_one['content'] = '<!-- wp:tests/my-block /-->' . $pattern_one['content'];449 450 445 $pattern = $this->registry->get_registered( 'test/one' ); 451 $this->assertSame( $pattern_one, $pattern ); 446 $this->assertStringStartsWith( '<!-- wp:tests/my-block /-->', $pattern['content'] ); 447 $this->assertStringContainsString( '"metadata":{"ignoredHookedBlocks":["tests/my-block"]}', $pattern['content'] ); 452 448 } 453 449
Note: See TracChangeset
for help on using the changeset viewer.