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

Product_Collection::render_product_contentprivateWC 1.0

Render default product content when no inner blocks are present.

Метод класса: Product_Collection{}

Хуков нет.

Возвращает

Строку.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->render_product_content( ?\WC_Product $product, $template_block, $collection_type ): string;
?\WC_Product $product(обязательный)
.
$template_block(массив) (обязательный)
Inner block data.
$collection_type(строка) (обязательный)
Collection type identifier.

Код Product_Collection::render_product_content() WC 10.4.3

private function render_product_content( ?\WC_Product $product, array $template_block, string $collection_type ): string {
	$content = '';

	if ( ! $product ) {
		return $content;
	}

	foreach ( $template_block['innerBlocks'] as $inner_block ) {
		switch ( $inner_block['blockName'] ) {
			case 'woocommerce/product-price':
			case 'woocommerce/product-button':
			case 'woocommerce/product-sale-badge':
			case 'woocommerce/product-image':
				$inner_block['context']               = $inner_block['context'] ?? array();
				$inner_block['context']['postId']     = $product->get_id();
				$inner_block['context']['collection'] = $collection_type;
				$content                             .= render_block( $inner_block );
				break;
			case 'core/post-title':
				global $post;
				$original_post           = $post;
				$original_global_product = $GLOBALS['product'] ?? null;

				$product_post = get_post( $product->get_id() );

				$post               = $product_post; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
				$GLOBALS['product'] = $product;

				$inner_block['context']           = $inner_block['context'] ?? array();
				$inner_block['context']['postId'] = $product->get_id();

				$content .= render_block( $inner_block );

				$post               = $original_post; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited
				$GLOBALS['product'] = $original_global_product;
				break;
			default:
				break;
		}
	}

	return $content;
}