- * @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 its 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];
-
- $link = add_query_arg( array( 'preview' => 1, 'template' => $_GET['template'], 'stylesheet' => @$_GET['stylesheet'], 'preview_iframe' => 1 ), $matches[3] );
- if ( 0 === strpos($link, 'preview=1') )
- $link = "?$link";
- return $matches[1] . esc_attr( $link ) . $matches[4];
-}
-
-/**
- * Switches current theme to new template and stylesheet names.