_flatten_blocks

The timeline below displays how wordpress function _flatten_blocks has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.1

/**
 * Returns an array containing the references of
 * the passed blocks and their inner blocks.
 *
 * @since 5.9.0
 * @access private
 *
 * @param array $blocks array of blocks.
 * @return array block references to the passed blocks and their inner blocks.
 */
function _flatten_blocks(&$blocks)
{
    $all_blocks = array();
    $queue = array();
    foreach ($blocks as &$block) {
        $queue[] =& $block;
    }
    while (count($queue) > 0) {
        $block =& $queue[0];
        array_shift($queue);
        $all_blocks[] =& $block;
        if (!empty($block['innerBlocks'])) {
            foreach ($block['innerBlocks'] as &$inner_block) {
                $queue[] =& $inner_block;
            }
        }
    }
    return $all_blocks;
}

WordPress Version: 5.9

/**
 * Returns an array containing the references of
 * the passed blocks and their inner blocks.
 *
 * @since 5.9.0
 * @access private
 *
 * @param array $blocks array of blocks.
 *
 * @return array block references to the passed blocks and their inner blocks.
 */
function _flatten_blocks(&$blocks)
{
    $all_blocks = array();
    $queue = array();
    foreach ($blocks as &$block) {
        $queue[] =& $block;
    }
    while (count($queue) > 0) {
        $block =& $queue[0];
        array_shift($queue);
        $all_blocks[] =& $block;
        if (!empty($block['innerBlocks'])) {
            foreach ($block['innerBlocks'] as &$inner_block) {
                $queue[] =& $inner_block;
            }
        }
    }
    return $all_blocks;
}