Make WordPress Core


Ignore:
Timestamp:
09/20/2023 04:47:44 PM (14 months ago)
Author:
Bernhard Reiter
Message:

Blocks: Revert implementation of block insertion functions.

In [56618], three functions (insert_inner_block, prepend_inner_block, and append_inner_block) were introduced. They were meant to be used for insertion of hooked blocks; however, it was discovered that the original idea wouldn't work for sibling insertion. Instead, a different approach will be taken (see #59412), and these functions are no longer needed and can thus be removed.

Reverts [56618].
See #59412, #59385, #59313.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/blocks.php

    r56620 r56634  
    762762
    763763/**
    764  * Insert a parsed block into a parent block's inner blocks.
    765  *
    766  * Given a parsed block, a block index, and a chunk index, insert another parsed block
    767  * into the parent block at the given indices.
    768  *
    769  * Note that the this mutates the parent block by inserting into the parent's `innerBlocks`
    770  * array, and by updating the parent's `innerContent` array accordingly.
    771  *
    772  * @since 6.4.0
    773  *
    774  * @param array $parent_block   The parent block.
    775  * @param int   $block_index    The index specifying the insertion position among the parent block's inner blocks.
    776  * @param int   $chunk_index    The index specifying the insertion position among the parent block's inner content chunks.
    777  * @param array $inserted_block The block to insert.
    778  * @return void
    779  */
    780 function insert_inner_block( &$parent_block, $block_index, $chunk_index, $inserted_block ) {
    781     array_splice( $parent_block['innerBlocks'], $block_index, 0, array( $inserted_block ) );
    782 
    783     /*
    784      * Since WP_Block::render() iterates over `inner_content` (rather than `inner_blocks`)
    785      * when rendering blocks, we also need to insert a value (`null`, to mark a block
    786      * location) into that array.
    787      */
    788     array_splice( $parent_block['innerContent'], $chunk_index, 0, array( null ) );
    789 }
    790 
    791 /**
    792  * Prepend a parsed block to a parent block's inner blocks.
    793  *
    794  * Given a parsed block, prepend another parsed block to the parent block's inner blocks.
    795  *
    796  * Note that the this mutates the parent block by inserting into the parent's `innerBlocks`
    797  * array, and by updating the parent's `innerContent` array accordingly.
    798  *
    799  * @since 6.4.0
    800  *
    801  * @param array  $parent_block   The parent block.
    802  * @param array  $inserted_block The block to insert.
    803  * @return void
    804  */
    805 function prepend_inner_block( &$parent_block, $inserted_block ) {
    806     $chunk_index = 0;
    807     for ( $index = 0; $index < count( $parent_block['innerContent'] ); $index++ ) {
    808         if ( is_null( $parent_block['innerContent'][ $index ] ) ) {
    809             $chunk_index = $index;
    810             break;
    811         }
    812     }
    813     insert_inner_block( $parent_block, 0, $chunk_index, $inserted_block );
    814 }
    815 
    816 /**
    817  * Append a parsed block to a parent block's inner blocks.
    818  *
    819  * Given a parsed block, append another parsed block to the parent block's inner blocks.
    820  *
    821  * Note that the this mutates the parent block by inserting into the parent's `innerBlocks`
    822  * array, and by updating the parent's `innerContent` array accordingly.
    823  *
    824  * @since 6.4.0
    825  *
    826  * @param array  $parent_block   The parent block.
    827  * @param array  $inserted_block The block to insert.
    828  * @return void
    829  */
    830 function append_inner_block( &$parent_block, $inserted_block ) {
    831     $chunk_index = count( $parent_block['innerContent'] );
    832     for ( $index = count( $parent_block['innerContent'] ); $index > 0; $index-- ) {
    833         if ( is_null( $parent_block['innerContent'][ $index - 1 ] ) ) {
    834             $chunk_index = $index;
    835             break;
    836         }
    837     }
    838     insert_inner_block( $parent_block, count( $parent_block['innerBlocks'] ), $chunk_index, $inserted_block );
    839 }
    840 
    841 /**
    842764 * Given an array of attributes, returns a string in the serialized attributes
    843765 * format prepared for post content.
Note: See TracChangeset for help on using the changeset viewer.