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

Embed::render_video_embedprivateWC 1.0

Render a video embed using the Video renderer.

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

Хуков нет.

Возвращает

Строку. Rendered video embed or fallback.

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

// private - только в коде основоного (родительского) класса
$result = $this->render_video_embed( $url, $provider, $parsed_block, $rendering_context, $block_content ): string;
$url(строка) (обязательный)
URL of the video.
$provider(строка) (обязательный)
Provider name.
$parsed_block(массив) (обязательный)
Parsed block.
$rendering_context(Rendering_Context) (обязательный)
Rendering context.
$block_content(строка) (обязательный)
Original block content.

Код Embed::render_video_embed() WC 10.4.3

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;
}