function create_zip($themeName) { $exclude_files = array('.', '..', '.svn', 'thumbs.db', '!sources', 'style.less.cache', 'bootstrap.less.cache', '.gitignore', '.git'); $all_themes_dir = str_replace('\\', '/', get_theme_root()); $backup_dir = str_replace('\\', '/', WP_CONTENT_DIR) . '/themes_backup'; $zip_name = $backup_dir . "/" . $themeName . '.zip'; $backup_date = date("F d Y"); if (is_dir($all_themes_dir . "/" . $themeName)) { $file_string = scan_dir($all_themes_dir . "/" . $themeName, $exclude_files); } if (function_exists('wp_get_theme')) { $backup_version = wp_get_theme($themeName)->Version; } else { $backup_version = get_current_theme($themeName)->Version; } if (!is_dir($backup_dir)) { if (mkdir($backup_dir, 0700)) { $htaccess_file = fopen($backup_dir . '/.htaccess', 'a'); $htaccess_text = 'deny from all'; fwrite($htaccess_file, $htaccess_text); fclose($htaccess_file); } } $zip = new PclZip($zip_name); if ($zip->create($file_string, PCLZIP_OPT_REMOVE_PATH, $all_themes_dir . "/" . $themeName) == 0) { die("Error : " . $zip->errorInfo(true)); } update_option($themeName . "_date_backup", $backup_date, '', 'yes'); update_option($themeName . "_version_backup", $backup_version, '', 'yes'); echo $backup_date . "," . $backup_version; }
function wpd_download() { if (!class_exists('PclZip')) { include ABSPATH . 'wp-admin/includes/class-pclzip.php'; } $what = $_GET['wpd']; $object = $_GET['object']; switch ($what) { case 'plugin': if (strpos($object, '/')) { $object = dirname($object); } $root = WP_PLUGIN_DIR; break; case 'theme': $root = get_theme_root($object); break; } $path = $root . '/' . $object; $fileName = $object . '.zip'; $archive = new PclZip($fileName); $archive->add($path, PCLZIP_OPT_REMOVE_PATH, $root); header('Content-type: application/zip'); header('Content-Disposition: attachment; filename="' . $fileName . '"'); readfile($fileName); // remove tmp zip file unlink($fileName); exit; }
} /** * Analyzes this file. */ protected function analyze_file() { // Load the contents of the file if (is_null($this->filecontents) || !$this->filecontents) { $this->filecontents = file_get_contents($this->filepath); } if (false === $this->filecontents) { return; } // Strip strings and comments from the file. Preserve line numbers $stripped = $this->strip_strings_and_comments($this->filecontents); // Do the php check hierarchy $this->processed_file_contents = $this->do_check_hierarchy('', $this->check_hierarchy, $stripped, 0); // Only continue if this file is a style.css file. if ($this->get_filename() !== 'style.css') { return; } // Check if this file is the main stylesheet for a theme $path = pathinfo($this->get_filepath(), PATHINFO_DIRNAME); $theme_root = get_theme_root($this->get_filepath()); if (0 === strpos($path, $theme_root)) { $path = substr($path, strlen($theme_root)); } $theme = wp_get_theme($path); if (!empty($theme) && is_a($theme, 'WP_Theme')) { $this->is_main_stylesheet = true; $this->theme = $theme; }
function bp_gallery_get_template_cssjs_dir_url(){ $theme_dir=""; $stylesheet_dir=""; global $bp,$current_blog; if(is_multisite()&&$current_blog->blog_id!=BP_ROOT_BLOG){ //find the stylesheet path and $stylesheet = get_blog_option(BP_ROOT_BLOG,'stylesheet'); $theme_root = get_theme_root( $stylesheet ); $stylesheet_dir = "$theme_root/$stylesheet"; $template=get_blog_option(BP_ROOT_BLOG,'template'); $theme_root = get_theme_root( $template ); $template_dir = "$theme_root/$template"; $theme_root_uri = get_theme_root_uri( $stylesheet ); $stylesheet_dir_uri = "$theme_root_uri/$stylesheet"; $theme_root_uri = get_theme_root_uri( $template ); $template_dir_uri = "$theme_root_uri/$template"; } else{ $stylesheet_dir=STYLESHEETPATH; $template_dir=TEMPLATEPATH; $stylesheet_dir_uri=get_stylesheet_directory_uri(); $template_dir_uri=get_template_directory_uri(); } if ( file_exists( $stylesheet_dir. '/gallery/inc')) $theme_uri=$stylesheet_dir_uri;//child theme else if ( file_exists( $template_dir. '/gallery/inc') ) $theme_uri=$template_dir_uri;//parent theme if($theme_uri) return $theme_uri."/gallery"; return false;////template is not present in the active theme/child theme }
public function does_theme_include_idx_tag() { // default page content //the empty div is for any content they add to the visual editor so it displays $post_content = '<div></div><div id="idxStart" style="display: none;"></div><div id="idxStop" style="display: none;"></div>'; // get theme to check start/stop tag $does_theme_include_idx_tag = false; $template_root = get_theme_root() . DIRECTORY_SEPARATOR . get_stylesheet(); $files = scandir($template_root); foreach ($files as $file) { $path = $template_root . DIRECTORY_SEPARATOR . $file; if (is_file($path) && preg_match('/.*\\.php/', $file)) { $content = file_get_contents($template_root . DIRECTORY_SEPARATOR . $file); if (preg_match('/<div[^>\\n]+?id=[\'"]idxstart[\'"].*?(\\/>|><\\/div>)/i', $content)) { if (preg_match('/<div[^>\\n]+?id=[\'"]idxstop[\'"].*?(\\/>|><\\/div>)/i', $content)) { $does_theme_include_idx_tag = true; break; } } } } if ($does_theme_include_idx_tag || function_exists('equity')) { $post_content = ''; } return $post_content; }
function presscore_load_theme_modules() { /** * Icons Bar. */ if (is_admin() && current_theme_supports('presscore_admin_icons_bar')) { include_once PRESSCORE_ADMIN_MODS_DIR . '/mod-admin-icons-bar/icons-bar.class.php'; $icons_bar = new Presscore_Admin_Icons_Bar(array('fontello_css_url' => str_replace(get_theme_root(), get_theme_root_uri(), locate_template('css/fontello/css/fontello.css', false)), 'fontello_json_path' => locate_template("/css/fontello/config.json", false), 'textdomain' => LANGUAGE_ZONE)); } /** * TGM Plugin Activation. */ if (is_admin() && current_theme_supports('presscore_admin_tgm_plugins_setup')) { require_once PRESSCORE_ADMIN_MODS_DIR . '/mod-tgm-plugin-activation/tgm-plugin-setup.php'; } /** * Theme Update. */ if (!is_child_theme() && is_admin() && current_theme_supports('presscore_theme_update')) { require_once PRESSCORE_ADMIN_MODS_DIR . '/mod-theme-update/mod-theme-update.php'; } /** * Presscore Mega Menu. */ if (current_theme_supports('presscore_mega_menu')) { require_once PRESSCORE_MODS_DIR . '/mod-theme-mega-menu/mod-theme-mega-menu.php'; } /** * The7 adapter. */ if (current_theme_supports('presscore_the7_adapter')) { require_once PRESSCORE_MODS_DIR . '/mod-the7-compatibility/mod-the7-compatibility.php'; } }
public function rollback($theme, $args = array()) { $defaults = array('clear_update_cache' => true); $parsed_args = wp_parse_args($args, $defaults); $this->init(); $this->upgrade_strings(); if (0) { $this->skin->before(); $this->skin->set_result(false); $this->skin->error('up_to_date'); $this->skin->after(); return false; } $theme_slug = $this->skin->theme; $theme_version = $this->skin->options['version']; $download_endpoint = 'https://downloads.wordpress.org/theme/'; $url = $download_endpoint . $theme_slug . '.' . $theme_version . '.zip'; add_filter('upgrader_pre_install', array($this, 'current_before'), 10, 2); add_filter('upgrader_post_install', array($this, 'current_after'), 10, 2); add_filter('upgrader_clear_destination', array($this, 'delete_old_theme'), 10, 4); //'source_selection' => array($this, 'source_selection'), //there's a trac ticket to move up the directory for zip's which are made a bit differently, useful for non-.org plugins. $this->run(array('package' => $url, 'destination' => get_theme_root(), 'clear_destination' => true, 'clear_working' => true, 'hook_extra' => array('theme' => $theme, 'type' => 'theme', 'action' => 'update'))); remove_filter('upgrader_pre_install', array($this, 'current_before')); remove_filter('upgrader_post_install', array($this, 'current_after')); remove_filter('upgrader_clear_destination', array($this, 'delete_old_theme')); if (!$this->result || is_wp_error($this->result)) { return $this->result; } // Force refresh of theme update information wp_clean_themes_cache($parsed_args['clear_update_cache']); return true; }
function cltvo_wpURL_2_path($url) { $path = get_theme_root(); $path = str_replace('wp-content/themes', '', $path); $path = str_replace(home_url('/'), $path, $url); return $path; }
function get_cat_imgs($partial) { global $baseUrl; global $isMobile; $isMobile = false; $grid = ''; $partial = trim($partial); $dir = get_theme_root() . '/atlasdesigns.com'; $targetDir = $dir . '/img/work/' . $partial; if (!is_dir($targetDir)) { return "Oops there was a problem loading images. Please try another section! :)"; } chdir($targetDir); $gallery_items = scandir($targetDir); foreach ($gallery_items as $idx => $file) { if ($isMobile && $idx > 6) { continue; } if (strpos($file, '.') == 0) { continue; } $grid .= <<<EOL <li> \t<a class="thumb" rel="group" href="{$baseUrl}/wp-content/themes/atlasdesigns.com/img/work/{$partial}/{$file}"> \t\t<img src="{$baseUrl}/wp-content/themes/atlasdesigns.com/img/work/{$partial}/{$file}" alt="" /> \t</a> </li> EOL; } echo $grid; }
public function generate($filepath) { $template_dir = str_replace(array(':', '/', '\\'), '_', trim(get_theme_root(), '/\\')); $filepath = str_replace(array(':', '/', '\\'), '_', ltrim($filepath, '/\\')); $id = trim(str_replace($template_dir, '', $filepath), '_'); return $id; }
private static function init_listingDirectories() { if (null === MainWP_Security::$listingDirectories) { $wp_upload_dir = wp_upload_dir(); MainWP_Security::$listingDirectories = array(WP_CONTENT_DIR, WP_PLUGIN_DIR, get_theme_root(), $wp_upload_dir['basedir']); } }
function Include_my_php($params = array()) { extract(shortcode_atts(array('file' => 'default'), $params)); ob_start(); include get_theme_root() . '/' . get_template() . "/{$file}.php"; return ob_get_clean(); }
function nice_constants() { define('NICE_TPL_DIR', get_template_directory_uri()); define('NICE_TPL_PATH', get_theme_root() . '/' . get_template()); define('NICE_PREFIX', 'nice'); define('NICE_FRAMEWORK_VERSION', '1.1.5'); define('NICE_UPDATES_URL', 'http://updates.nicethemes.com'); }
function correct_path() { if( file_exists(get_theme_root().'/express_store/style.css' ) ) { // do nothing } else { echo '<div id="message" class="error" style="width: 97%; font-size:11px; line-height:1.6em;"> ERROR : You have successfully activated this theme but you may have problems. <br/> It looks like that the theme path of the Express Store theme is wrong! Currently this is your theme path : '. TEMPLATEPATH .', but it <br/><strong>MUST BE '.get_theme_root().'/express_store/'.'</strong>, having the express_store theme folder inside another folder will cause problems, make sure that the express_store folder is inside the wp-content/themes/ folder and not in any other subfolder</div>'; } }
/** * Return theme data for active theme * * @param string $theme_slug * @return array */ private function get_theme_data($theme_slug) { if (null === $this->theme_data) { $stylesheet = get_theme_root($theme_slug) . '/' . $theme_slug . '/style.css'; $this->theme_data = get_theme_data($stylesheet); } return $this->theme_data; }
public function registerPageTemplate($atts) { $cache_key = 'page_templates-' . md5(get_theme_root() . '/' . get_stylesheet()); $templates = empty(wp_get_theme()->get_page_templates()) ? [] : wp_get_theme()->get_page_templates(); wp_cache_delete($cache_key, 'themes'); $templates = array_merge($templates, $this->templates); wp_cache_add($cache_key, $templates, 'themes', 1800); return $atts; }
function wpestate_cron_generate_pins() { if (get_option('wp_estate_readsys', '') == 'yes') { $path = get_theme_root() . '/wprentals/pins.txt'; if (file_exists($path) && is_writable($path)) { wpestate_listing_pins(); } } }
private function _map_file_to_relative_origin($file) { $file = wp_normalize_path(realpath($file)); $plugin_path_rx = preg_quote(wp_normalize_path(WP_PLUGIN_DIR), '/'); $muplugin_path_rx = preg_quote(wp_normalize_path(WPMU_PLUGIN_DIR), '/'); $theme_path_rx = preg_quote(wp_normalize_path(get_theme_root()), '/'); $path_prefix = false; if (preg_match('/^' . $plugin_path_rx . '/', $file)) { $path_prefix = $plugin_path_rx; } else { if (preg_match('/^' . $muplugin_path_rx . '/', $file)) { $path_prefix = $muplugin_path_rx; } else { if (preg_match('/^' . $theme_path_rx . '/', $file)) { $path_prefix = $theme_path_rx; } } } if (empty($path_prefix)) { return $this->_get_l10n(self::ORIGIN_INTERNAL); } // Not a pugin, mu-plugin or a theme $clean_path = explode('/', ltrim(preg_replace('/^' . $path_prefix . '/', '', $file), '/')); $basename = !empty($clean_path[0]) ? $clean_path[0] : false; if (empty($basename)) { return $this->_get_l10n(self::ORIGIN_INTERNAL); } // We had an issue along the way and can't figure it out further if (!function_exists('get_plugin_data')) { require_once ABSPATH . 'wp-admin/includes/plugin.php'; } $all_plugins = get_plugins(); if ($path_prefix === $plugin_path_rx || $path_prefix === $muplugin_path_rx) { // It's a plugin, get the name $info = false; foreach ($all_plugins as $plugin => $pinfo) { if (!preg_match('/^' . preg_quote(trailingslashit($basename), '/') . '/', $plugin)) { continue; } $info = $pinfo; break; } if (empty($info)) { // Let's give it one last go for mu-plugins $info = get_plugin_data($file); } return !empty($info['Name']) ? $info['Name'] : $this->_get_l10n(self::ORIGIN_PLUGIN); } else { if ($theme_path_rx === $path_prefix) { $info = wp_get_theme($basename); $name = is_object($info) && method_exists($info, 'get') ? $info->get('Name') : false; return !empty($name) ? $name : $this->_get_l10n(self::ORIGIN_THEME); } } return $this->_get_l10n(self::ORIGIN_INTERNAL); }
function Ultimatum_Exporter(){ $task = ''; if(isset($_GET['task'])){ $task = $_GET['task']; } switch ($task){ default: break; case 'template': ultimatum_exportTemplate($_GET['template_id'],true); break; case 'theme': // Create utinstall folder $dir = THEME_DIR.DS.'ultinstall'; if(is_dir($dir)){ deleteDirectory($dir); } mkdir($dir); if(is_dir($dir)){ global $wpdb; $table = $wpdb->prefix.ULTIMATUM_PREFIX.'_templates'; $sql = 'SELECT * FROM `'.$table.'` WHERE `theme`=\''.THEME_SLUG.'\''; $templates = $wpdb->get_results($sql,ARRAY_A); if($templates){ foreach ($templates as $template){ ultimatum_exportTemplate($template['id'],false); } } // Create the zip and show download link ;) $backuplister[]= THEME_DIR; $fontsoption = get_option(THEME_SLUG.'_fonts'); if(count($fontsoption)!=0){ $fontsoption = serialize($fontsoption); $file = $dir.'/'.THEME_SLUG.'.fonts'; if(file_exists($file)){ unlink($file); } $fhandle = @fopen($file, 'w+'); if ($fhandle) fwrite($fhandle, $fontsoption, strlen($fontsoption)); } require_once(ABSPATH . 'wp-admin/includes/class-pclzip.php'); $archive = new PclZip(THEME_CACHE_DIR.'/'.THEME_NAME.'.zip'); $v_list = $archive->add($backuplister,PCLZIP_OPT_REMOVE_PATH, get_theme_root()); ?> <h2>Your File...</h2> <p>You have successfully Created your Export file you can download it via below link</p> <a href="<?php echo THEME_CACHE_URL; ?>/<?php echo THEME_NAME;?>.zip">Download File</a> <?php } else { echo 'Could not create folder needed in child teme directory.'; } break; } }
function addOptions() { if (isset($_POST['gi_subtle_reset'])) { themeGluedIdeas_Subtle::initOptions(true); } if (isset($_POST['gi_subtle_save'])) { $aOptions = themeGluedIdeas_Subtle::initOptions(false); $aOptions['errors'] = array(); $aOptions['style'] = $_POST['gi_subtle_style']; $aOptions['description'] = stripslashes($_POST['gi_subtle_description']); $aOptions['lead_count'] = $_POST['gi_subtle_lead_count']; $aOptions['lead_cats'] = $_POST['gi_subtle_lead_cats']; $aOptions['feedburner'] = $_POST['gi_subtle_feedburner']; $aOptions['feedburner_id'] = $_POST['gi_subtle_feedburner_id']; if ($_POST['gi_subtle_show_archives'] == 'true') { $aOptions['show_archives'] = true; } else { $aOptions['show_archives'] = false; } if ($_POST['gi_subtle_show_metalinks'] == 'true') { $aOptions['show_metalinks'] = true; } else { $aOptions['show_metalinks'] = false; } $aOptions['archives_cat'] = $_POST['gi_subtle_archives_cat']; if ($_POST['gi_subtle_show_subpages'] == 'true') { $aOptions['show_subpages'] = true; } else { $aOptions['show_subpages'] = false; } if ($_POST['gi_subtle_show_feedflare'] == 'true') { $aOptions['show_feedflare'] = true; } else { $aOptions['show_feedflare'] = false; } if ($_POST['gi_subtle_show_gravatar'] == 'true') { $aOptions['show_gravatar'] = true; } else { $aOptions['show_gravatar'] = false; } $aOptions['gravatar_rating'] = $_POST['gi_subtle_gravatar_rating']; $aOptions['gravatar_default'] = $_POST['gi_subtle_gravatar_default']; // Handle header creation if a valid JPG was sent $sStyleFolder = get_theme_root() . '/' . get_template() . '/styles/' . $aOptions['style'] . '/'; if (is_uploaded_file($_FILES['gi_subtle_header']['tmp_name']) || $_POST['gi_subtle_reset_header'] == 'true') { if (file_exists($sStyleFolder . 'generator.php')) { include_once $sStyleFolder . 'generator.php'; $aOptions['errors'] = generateHeader($sStyleFolder, $_POST['gi_subtle_reset_header']); } else { $aOptions['errors'][] = __('This theme style does not support uploadable headers', 'gluedideas_subtle'); } } update_option('gi_subtle_theme', $aOptions); } add_theme_page("Glued Ideas 'Subtle' Theme Options", "Current Theme Options", 'edit_themes', basename(__FILE__), array('themeGluedIdeas_Subtle', 'displayOptions')); }
update_option('wag_new_post_auto', 1); update_option('wag_new_page_auto', 1); update_option('icon_post', 1); update_option('icon_page', 1); } register_activation_hook(__FILE__, 'myplugin_activate'); register_uninstall_hook(__FILE__, 'myplugin_uninstal'); function myplugin_uninstal() { $df = get_theme_root();
/** * Returns the version of the the current theme. * * @return string * The version of the current theme. * * @ingroup helperfunc */ function get_theme_version() { if (class_exists('WP_Theme')) { $theme = new WP_Theme(get_theme_name(), get_theme_root()); return $theme->get('Version'); } else { $theme_data = get_theme_data(get_template_directory() . '/style.css'); return $theme_data['Version']; } }
private function multisite_get_themes() { $themes = array(); $theme_dirs = scandir(get_theme_root()); $theme_dirs = array_diff($theme_dirs, array('.', '..', '.DS_Store')); foreach ((array) $theme_dirs as $theme_dir) { $themes[] = wp_get_theme($theme_dir); } return $themes; }
/** * Permissions */ protected function permissions() { $base = trailingslashit(ABSPATH); $uploads = wp_upload_dir(); $paths = array('/' => $base, '/wp-admin/' => $base . 'wp-admin', '/wp-admin/js/' => $base . 'wp-admin/js', '/wp-includes/' => $base . 'wp-includes', '/wp-content/' => defined(WP_CONTENT_DIR) ? WP_CONTENT_DIR : $base . 'wp-content', '/wp-content/plugins/' => defined(WP_PLUGIN_DIR) ? WP_PLUGIN_DIR : $base . 'wp-content/plugins', '/wp-content/themes/' => get_theme_root(), '/wp-content/uploads/' => $uploads['basedir'], '.htaccess' => $base . '.htaccess', 'wp-config.php' => file_exists($base . 'wp-config.php') ? $base . 'wp-config.php' : trailingslashit(dirname($base)) . 'wp-config.php'); $results = array(); foreach ($paths as $key => $path) { $results[$key] = substr(sprintf('%o', fileperms($path)), -4); } return $results; }
function vip_maybe_include_functions_mobile_file() { // Find the file in the current VIP theme $stylesheet = get_stylesheet(); $theme_root = get_theme_root($stylesheet); $stylesheet_path = "{$theme_root}/{$stylesheet}"; $functions_path = $stylesheet_path . '/functions-mobile.php'; // Maybe include the functions-mobile.php file if (file_exists($functions_path) && is_readable($functions_path)) { require_once $functions_path; } }
public function cache_page_template($atts) { $cache_key = 'page_templates-' . md5(get_theme_root() . '/' . get_stylesheet()); $templates = wp_get_theme()->get_page_templates(); if (!is_array($templates) || empty($templates)) { $templates = array(); } wp_cache_delete($cache_key, 'themes'); $templates = array_merge($templates, $this->templates); wp_cache_add($cache_key, $templates, 'themes', 1800); return $atts; }
function theme_get_cufon_fonts() { global $theme_cufon_fonts; if (empty($theme_cufon_fonts)) { $theme_cufon_fonts = array(); foreach (glob(get_theme_root() . '/' . get_template() . '/fonts/*.js') as $font_file) { if (preg_match('/"font-family":"(.*?)".*"font-weight":(.*?),/i', file_get_contents($font_file), $match)) { $theme_cufon_fonts[trim($match[1])][trim($match[2])] = basename($font_file); } } } return $theme_cufon_fonts; }
function start() { global $infotv; $i = get_option($infotv->prefix . "websocket_status", 0); if ($i == 0) { //$srv = popen("php '". get_theme_root() ."/slideshow-new/websocket_server/websocket.php' &", "r"); $pid = shell_exec("cd '" . get_theme_root() . "/slideshow-new/websocket_server/'; nohup php ./websocket.php > /dev/null & echo \$!"); update_option($infotv->prefix . "websocket_pid", $pid); update_option($infotv->prefix . "websocket_status", 1); } else { //allready running } }
public function theme_manifest() { $this->line(""); $this->comment("Theme Manifest"); $theme_folder = get_theme_root() . "/" . get_stylesheet(); $asset_folder = "/public"; $uri_path = $theme_folder . $asset_folder; $files_array = glob_recursive($uri_path . "/*.*", GLOB_ERR); $files_array = array_map(array($this, 'root_to_relative_url'), $files_array); foreach ($files_array as $file) { $this->line($file); } }
function op_version_page() { $xml = op_get_version(); $latestver = $xml->version; ?> <div class="wrap"> <h2 style="margin-bottom: .5em;"><strong><?php echo op_config('theme_name'); ?> </strong> <?php _e('Update', 'openframe'); ?> </h2> <p style="font-size: 1.3em;"><?php printf(__('<strong>%s - Version %s</strong> is available to download (you are currently using <strong>Version %s</strong>).', 'openframe'), op_config('theme_name'), $latestver, op_theme_version); ?> </p> <div style="margin-top: 1em;"> <h2><?php _e('How do I update?', 'openframe'); ?> </h2> <p><?php printf(__('Updating a theme is pretty much like installing it. Download it from ThemeForest.net, extract the .zip package, find the theme folder or the theme zip file. Now, if you do not know how to connect via FTP connection to your server, simply delete the current version of "%s" from WordPress and install the new one (Version %s). Otherwise, connect to your server, navigate to the WordPress themes folder and replace the whole theme folder with the new version.', 'openframe'), op_config('theme_name'), $latestver); ?> </p> <p><?php _e('Your themes path is:', 'openframe'); ?> <code><?php echo get_theme_root(); ?> </code></p> <p><?php _e('<strong>IMPORTANT:</strong> <em>If you made changes to the theme files you will probably lose theme settings when updating. In that case we recommend to backup your theme folder first, look at <strong>changes.txt</strong> file contained into the new theme version package and manually update only the files that have been changed.</em>', 'openframe'); ?> </p> <h2><?php _e('Changelog', 'openframe'); ?> </h2> <div><?php echo $xml->changes; ?> </div> </div> </div> <?php }