Automattic\WooCommerce\Internal\Admin\EmailPreview

EmailPreview::generate_placeholder_contentpublicWC 1.0

Generate placeholder content for a specific email type, typically used in the email editor.

Encapsulates the logic for setting the email type, generating raw content, applying styles, ensuring links open in new tabs, and handling errors based on WP_DEBUG.

Method of the class: EmailPreview{}

No Hooks.

Returns

String. The generated and styled HTML content.

Usage

$EmailPreview = new EmailPreview();
$EmailPreview->generate_placeholder_content( $email_type_class_name ): string;
$email_type_class_name(string) (required)
The class name of the WC_Email type (e.g., 'WC_Email_Customer_Processing_Order').

EmailPreview::generate_placeholder_content() code WC 10.7.0

public function generate_placeholder_content( string $email_type_class_name ): string {
	// Note: set_email_type can throw InvalidArgumentException.
	$this->set_email_type( $email_type_class_name );

	$woo_content_processor = wc_get_container()->get( WooContentProcessor::class );

	$generate_content_closure = function () use ( $woo_content_processor ) {
		// Note: If 'woocommerce_email_styles' filter was intentional and `prepare_css` isn't
		// the intended callback, adjust accordingly. This assumes `prepare_css` applies styles
		// needed for the Woo content block.
		add_filter( 'woocommerce_email_styles', array( $woo_content_processor, 'prepare_css' ), 10, 2 );
		$content = $woo_content_processor->get_woo_content( $this->get_email() );
		$content = $this->get_email()->style_inline( $content );
		$content = $this->ensure_links_open_in_new_tab( $content );
		return $content;
	};

	$this->set_up_filters();

	$message = '';
	try {
		if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
			$message = $generate_content_closure();
		} else {
			// Use output buffering to prevent partial renders with PHP notices or warnings when WP_DEBUG is off.
			ob_start();
			try {
				$message = $generate_content_closure();
			} catch ( Throwable $e ) {
				ob_end_clean();
				// Let the caller handle the exception.
				throw new \RuntimeException( esc_html__( 'There was an error rendering the email editor placeholder content.', 'woocommerce' ), 0, $e );
			}
			ob_end_clean();
		}
	} finally {
		$this->clean_up_filters();
	}

	return $message;
}