MailPoet\EmailEditor\Engine\Renderer

Renderer::render()publicWC 1.0

Renders the email template

Method of the class: Renderer{}

Hooks from the method

Return

Array.

Usage

$Renderer = new Renderer();
$Renderer->render( $post, $subject, $pre_header, $language, $meta_robots ): array;
$post(\WP_Post) (required)
Post object.
$subject(string) (required)
Email subject.
$pre_header(string) (required)
Email preheader.
$language(string) (required)
Email language.
$meta_robots(string)
Email meta robots.
Default: ''

Renderer::render() code WC 9.8.1

public function render( \WP_Post $post, string $subject, string $pre_header, string $language, $meta_robots = '' ): array { // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundAfterLastUsed
	$template_slug = get_page_template_slug( $post ) ? get_page_template_slug( $post ) : 'email-general';
	/** @var \WP_Block_Template $template */ // phpcs:ignore Generic.Commenting.DocComment.MissingShort -- used for phpstan
	$template = $this->templates->get_block_template( $template_slug );

	$email_styles  = $this->theme_controller->get_styles();
	$template_html = $this->content_renderer->render( $post, $template );
	$layout        = $this->theme_controller->get_layout_settings();

	ob_start();
	include self::TEMPLATE_FILE;
	$rendered_template = (string) ob_get_clean();

	$template_styles   =
	WP_Style_Engine::compile_css(
		array(
			'background-color' => $email_styles['color']['background'] ?? 'inherit',
			'color'            => $email_styles['color']['text'] ?? 'inherit',
			'padding-top'      => $email_styles['spacing']['padding']['top'] ?? '0px',
			'padding-bottom'   => $email_styles['spacing']['padding']['bottom'] ?? '0px',
			'padding-left'     => $email_styles['spacing']['padding']['left'] ?? '0px',
			'padding-right'    => $email_styles['spacing']['padding']['right'] ?? '0px',
			'font-family'      => $email_styles['typography']['fontFamily'] ?? 'inherit',
			'line-height'      => $email_styles['typography']['lineHeight'] ?? '1.5',
			'font-size'        => $email_styles['typography']['fontSize'] ?? 'inherit',
		),
		'body, .email_layout_wrapper'
	);
	$template_styles  .= '.email_layout_wrapper { box-sizing: border-box;}';
	$template_styles  .= file_get_contents( __DIR__ . '/' . self::TEMPLATE_STYLES_FILE );
	$template_styles   = '<style>' . wp_strip_all_tags( (string) apply_filters( 'mailpoet_email_renderer_styles', $template_styles, $post ) ) . '</style>';
	$rendered_template = $this->inline_css_styles( $template_styles . $rendered_template );

	// This is a workaround to support link :hover in some clients. Ideally we would remove the ability to set :hover
	// however this is not possible using the color panel from Gutenberg.
	if ( isset( $email_styles['elements']['link'][':hover']['color']['text'] ) ) {
		$rendered_template = str_replace( '<!-- Forced Styles -->', '<style>a:hover { color: ' . esc_attr( $email_styles['elements']['link'][':hover']['color']['text'] ) . ' !important; }</style>', $rendered_template );
	}

	return array(
		'html' => $rendered_template,
		'text' => $this->render_text_version( $rendered_template ),
	);
}