handle_legacy_widget_preview_iframe

The timeline below displays how wordpress function handle_legacy_widget_preview_iframe has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.9

/**
 * Intercepts any request with legacy-widget-preview in the query param and, if
 * set, renders a page containing a preview of the requested Legacy Widget
 * block.
 */
function handle_legacy_widget_preview_iframe()
{
    if (empty($_GET['legacy-widget-preview'])) {
        return;
    }
    if (!current_user_can('edit_theme_options')) {
        return;
    }
    define('IFRAME_REQUEST', true);
    ?>
	<!doctype html>
	<html <?php 
    language_attributes();
    ?>>
	<head>
		<meta charset="<?php 
    bloginfo('charset');
    ?>" />
		<meta name="viewport" content="width=device-width, initial-scale=1" />
		<link rel="profile" href="https://gmpg.org/xfn/11" />
		<?php 
    wp_head();
    ?>
		<style>
			/* Reset theme styles */
			html, body, #page, #content {
				padding: 0 !important;
				margin: 0 !important;
			}

			/* Hide root level text nodes */
			body {
				font-size: 0 !important;
			}

			/* Hide non-widget elements */
			body *:not(#page):not(#content):not(.widget):not(.widget *) {
				display: none !important;
				font-size: 0 !important;
				height: 0 !important;
				left: -9999px !important;
				max-height: 0 !important;
				max-width: 0 !important;
				opacity: 0 !important;
				pointer-events: none !important;
				position: absolute !important;
				top: -9999px !important;
				transform: translate(-9999px, -9999px) !important;
				visibility: hidden !important;
				z-index: -999 !important;
			}

			/* Restore widget font-size */
			.widget {
				font-size: var(--global--font-size-base);
			}
		</style>
	</head>
	<body <?php 
    body_class();
    ?>>
		<div id="page" class="site">
			<div id="content" class="site-content">
				<?php 
    $registry = WP_Block_Type_Registry::get_instance();
    $block = $registry->get_registered('core/legacy-widget');
    echo $block->render($_GET['legacy-widget-preview']);
    ?>
			</div><!-- #content -->
		</div><!-- #page -->
		<?php 
    wp_footer();
    ?>
	</body>
	</html>
	<?php 
    exit;
}

WordPress Version: 5.8

/**
 * Intercepts any request with legacy-widget-preview in the query param and, if
 * set, renders a page containing a preview of the requested Legacy Widget
 * block.
 */
function handle_legacy_widget_preview_iframe()
{
    if (empty($_GET['legacy-widget-preview'])) {
        return;
    }
    if (!current_user_can('edit_theme_options')) {
        return;
    }
    define('IFRAME_REQUEST', true);
    ?>
	<!doctype html>
	<html <?php 
    language_attributes();
    ?>>
	<head>
		<meta charset="<?php 
    bloginfo('charset');
    ?>" />
		<meta name="viewport" content="width=device-width, initial-scale=1" />
		<link rel="profile" href="https://gmpg.org/xfn/11" />
		<?php 
    wp_head();
    ?>
		<style>
			/* Reset theme styles */
			html, body, #page, #content {
				padding: 0 !important;
				margin: 0 !important;
			}
		</style>
	</head>
	<body <?php 
    body_class();
    ?>>
		<div id="page" class="site">
			<div id="content" class="site-content">
				<?php 
    $registry = WP_Block_Type_Registry::get_instance();
    $block = $registry->get_registered('core/legacy-widget');
    echo $block->render($_GET['legacy-widget-preview']);
    ?>
			</div><!-- #content -->
		</div><!-- #page -->
		<?php 
    wp_footer();
    ?>
	</body>
	</html>
	<?php 
    exit;
}