Themes: Remove legacy theme preview.

The pre-3.4 theme previewer doesn't work when using a static front page.
We kept the old theme preview for no-JS and some browsers that were less capable. But since browsers are doing a better job today we don't need to continue fixing/shipping this legacy code. Bye!

fixes #33178.

git-svn-id: https://develop.svn.wordpress.org/trunk@33492 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Dominik Schilling (ocean90)
2015-07-29 18:35:40 +00:00
parent 27c7e27d8b
commit faac72a070
9 changed files with 80 additions and 156 deletions

View File

@@ -660,116 +660,6 @@ function locale_stylesheet() {
echo '<link rel="stylesheet" href="' . $stylesheet . '" type="text/css" media="screen" />';
}
/**
* Start preview theme output buffer.
*
* Will only perform task if the user has permissions and template and preview
* query variables exist.
*
* @since 2.6.0
*/
function preview_theme() {
if ( ! (isset($_GET['template']) && isset($_GET['preview'])) )
return;
if ( !current_user_can( 'switch_themes' ) )
return;
// Admin Thickbox requests
if ( isset( $_GET['preview_iframe'] ) )
show_admin_bar( false );
$_GET['template'] = preg_replace('|[^a-z0-9_./-]|i', '', $_GET['template']);
if ( validate_file($_GET['template']) )
return;
add_filter( 'template', '_preview_theme_template_filter' );
if ( isset($_GET['stylesheet']) ) {
$_GET['stylesheet'] = preg_replace('|[^a-z0-9_./-]|i', '', $_GET['stylesheet']);
if ( validate_file($_GET['stylesheet']) )
return;
add_filter( 'stylesheet', '_preview_theme_stylesheet_filter' );
}
// Prevent theme mods to current theme being used on theme being previewed
add_filter( 'pre_option_theme_mods_' . get_option( 'stylesheet' ), '__return_empty_array' );
ob_start( 'preview_theme_ob_filter' );
}
/**
* Private function to modify the current template when previewing a theme
*
* @since 2.9.0
* @access private
*
* @return string
*/
function _preview_theme_template_filter() {
return isset($_GET['template']) ? $_GET['template'] : '';
}
/**
* Private function to modify the current stylesheet when previewing a theme
*
* @since 2.9.0
* @access private
*
* @return string
*/
function _preview_theme_stylesheet_filter() {
return isset($_GET['stylesheet']) ? $_GET['stylesheet'] : '';
}
/**
* Callback function for ob_start() to capture all links in the theme.
*
* @since 2.6.0
* @access private
*
* @param string $content
* @return string
*/
function preview_theme_ob_filter( $content ) {
return preg_replace_callback( "|(<a.*?href=([\"']))(.*?)([\"'].*?>)|", 'preview_theme_ob_filter_callback', $content );
}
/**
* Manipulates preview theme links in order to control and maintain location.
*
* Callback function for preg_replace_callback() to accept and filter matches.
*
* @since 2.6.0
* @access private
*
* @param array $matches
* @return string
*/
function preview_theme_ob_filter_callback( $matches ) {
if ( strpos($matches[4], 'onclick') !== false )
$matches[4] = preg_replace('#onclick=([\'"]).*?(?<!\\\)\\1#i', '', $matches[4]); //Strip out any onclicks from rest of <a>. (?<!\\\) means to ignore the '" if it's escaped by \ to prevent breaking mid-attribute.
if (
( false !== strpos($matches[3], '/wp-admin/') )
||
( false !== strpos( $matches[3], '://' ) && 0 !== strpos( $matches[3], home_url() ) )
||
( false !== strpos($matches[3], '/feed/') )
||
( false !== strpos($matches[3], '/trackback/') )
)
return $matches[1] . "#$matches[2] onclick=$matches[2]return false;" . $matches[4];
$stylesheet = isset( $_GET['stylesheet'] ) ? $_GET['stylesheet'] : '';
$template = isset( $_GET['template'] ) ? $_GET['template'] : '';
$link = add_query_arg( array( 'preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => 1 ), $matches[3] );
if ( 0 === strpos($link, 'preview=1') )
$link = "?$link";
return $matches[1] . esc_attr( $link ) . $matches[4];
}
/**
* Switches the theme.
*