Automattic\WooCommerce\EmailEditor\Integrations\WooCommerce\Renderer\Blocks

Product_Image::process_inner_blocksprivateWC 1.0

Process inner blocks (like sale badges) from block content. Handles special positioning for email compatibility.

Method of the class: Product_Image{}

No Hooks.

Returns

Array. Array with 'badges' and 'other_content' keys

Usage

// private - for code of main (parent) class only
$result = $this->process_inner_blocks( $parsed_block, $product, $rendering_context ): array;
$parsed_block(array) (required)
Parsed block.
$product(WC_Product) (required)
Product object.
$rendering_context(Rendering_Context) (required)
Rendering context.

Product_Image::process_inner_blocks() code WC 10.7.0

private function process_inner_blocks( array $parsed_block, \WC_Product $product, Rendering_Context $rendering_context ): array {
	$badges          = '';
	$other_content   = '';
	$badge_alignment = 'left';

	if ( ! empty( $parsed_block['innerBlocks'] ) ) {
		foreach ( $parsed_block['innerBlocks'] as $inner_block ) {
			$inner_block['context']           = $inner_block['context'] ?? array();
			$inner_block['context']['postId'] = $product->get_id();

			if ( 'woocommerce/product-sale-badge' === $inner_block['blockName'] ) {
				$badges         .= $this->render_overlay_badge( $inner_block, $product, $rendering_context );
				$badge_alignment = $inner_block['attrs']['align'] ?? 'left';
			} else {
				$other_content .= render_block( $inner_block );
			}
		}
	}

	return array(
		'badges'          => $badges,
		'other_content'   => $other_content,
		'badge_alignment' => $badge_alignment,
	);
}