Automattic\WooCommerce\EmailEditor\Integrations\Core\Renderer\Blocks
Embed::render_video_embed
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() 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;
}