$blockName, 'attrs' => $attributes, ]; // Create a proper WP_Block instance if the block type is registered $block_type = \WP_Block_Type_Registry::get_instance()->get_registered($blockName); if ($block_type) { $block = new \WP_Block($parsed_block, []); } else { // Fallback to mock object if block type isn't registered $block = (object) [ 'blockName' => $blockName, 'attributes' => $attributes, ]; } // Set the block context for WordPress block supports (needed for get_block_wrapper_attributes) $previous_block_to_render = \WP_Block_Supports::$block_to_render; \WP_Block_Supports::$block_to_render = $parsed_block; // Extract extra variables to make them available in the render file if (!empty($extraVars)) { extract($extraVars, EXTR_SKIP); } ob_start(); include $renderFilePath; $output = ob_get_clean(); // Restore the previous block context \WP_Block_Supports::$block_to_render = $previous_block_to_render; return $output; } }