diff --git a/wp-includes/theme.php b/wp-includes/theme.php index 25ad83b01..19b04e347 100644 --- a/wp-includes/theme.php +++ b/wp-includes/theme.php @@ -886,13 +886,13 @@ function preview_theme() { if ( validate_file($_GET['template']) ) return; - add_filter( 'template', create_function('', "return '{$_GET['template']}';") ); + 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', create_function('', "return '{$_GET['stylesheet']}';") ); + add_filter( 'stylesheet', '_preview_theme_stylesheet_filter' ); } // Prevent theme mods to current theme being used on theme being previewed @@ -902,6 +902,24 @@ function preview_theme() { } add_action('setup_theme', 'preview_theme'); +/** + * Private function to modify the current template when previewing a theme + * + * @return string + */ +function _preview_theme_template_filter() { + return isset($_GET['template']) ? $_GET['template'] : ''; +} + +/** + * Private function to modify the current stylesheet when previewing a theme + * + * @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. *