WP_Customize_Manager::remove_frameless_preview_messenger_channel()

Removes customize_messenger_channel query parameter from the preview window when it is not in an iframe.


Description

This ensures that the admin bar will be shown. It also ensures that link navigation will work as expected since the parent frame is not being sent the URL to navigate to.


Top ↑

Source

File: wp-includes/class-wp-customize-manager.php. View all references

public function remove_frameless_preview_messenger_channel() {
	if ( ! $this->messenger_channel ) {
		return;
	}
	?>
	<script>
	( function() {
		var urlParser, oldQueryParams, newQueryParams, i;
		if ( parent !== window ) {
			return;
		}
		urlParser = document.createElement( 'a' );
		urlParser.href = location.href;
		oldQueryParams = urlParser.search.substr( 1 ).split( /&/ );
		newQueryParams = [];
		for ( i = 0; i < oldQueryParams.length; i += 1 ) {
			if ( ! /^customize_messenger_channel=/.test( oldQueryParams[ i ] ) ) {
				newQueryParams.push( oldQueryParams[ i ] );
			}
		}
		urlParser.search = newQueryParams.join( '&' );
		if ( urlParser.search !== location.search ) {
			location.replace( urlParser.href );
		}
	} )();
	</script>
	<?php
}

Top ↑

Changelog

Changelog
Version Description
4.7.0 Introduced.

Top ↑

User Contributed Notes

You must log in before being able to contribute a note or feedback.