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

Embed::render_video_embedprivateWC 1.0

Render a video embed using the Video renderer.

Method of the class: Embed{}

No Hooks.

Returns

String. Rendered video embed or fallback.

Usage

// private - for code of main (parent) class only
$result = $this->render_video_embed( $url, $provider, $parsed_block, $rendering_context, $block_content ): string;
$url(string) (required)
URL of the video.
$provider(string) (required)
Provider name.
$parsed_block(array) (required)
Parsed block.
$rendering_context(Rendering_Context) (required)
Rendering context.
$block_content(string) (required)
Original block content.

Embed::render_video_embed() code WC 10.5.0

private function render_video_embed( string $url, string $provider, array $parsed_block, Rendering_Context $rendering_context, string $block_content ): string {
	// Try to get video thumbnail URL.
	$poster_url = $this->get_video_thumbnail_url( $url, $provider );

	// If no poster available, fall back to a simple link.
	if ( empty( $poster_url ) ) {
		$fallback_attr = $this->create_fallback_attributes( $url, $url );
		return $this->render_link_fallback( $fallback_attr, $block_content, $parsed_block, $rendering_context );
	}

	// Create a mock video block structure to reuse the Video renderer.
	$mock_video_block = array(
		'blockName' => 'core/video',
		'attrs'     => array(
			'poster' => $poster_url,
		),
		'innerHTML' => '<figure class="wp-block-video wp-block-embed is-type-video is-provider-' . esc_attr( $provider ) . '"><div class="wp-block-embed__wrapper">' . esc_url( $url ) . '</div></figure>',
	);

	// Copy email attributes to the mock block.
	if ( isset( $parsed_block['email_attrs'] ) ) {
		$mock_video_block['email_attrs'] = $parsed_block['email_attrs'];
	}

	// Use the Video renderer to render the video provider embed.
	$video_renderer = new Video();
	$video_result   = $video_renderer->render( $mock_video_block['innerHTML'], $mock_video_block, $rendering_context );

	// If video rendering fails, fall back to a simple link.
	if ( empty( $video_result ) ) {
		$fallback_attr = $this->create_fallback_attributes( $url, $url );
		return $this->render_link_fallback( $fallback_attr, $block_content, $parsed_block, $rendering_context );
	}

	return $video_result;
}