stylesheet ) ] ) == false ) $allowed_themes[ wp_specialchars( $ct->stylesheet ) ] = true; reset( $themes ); foreach( $themes as $key => $theme ) { if( isset( $allowed_themes[ wp_specialchars( $theme[ 'Stylesheet' ] ) ] ) == false ) { unset( $themes[ $key ] ); } } reset( $themes ); } if ( isset($_GET['action']) ) { if ( 'activate' == $_GET['action'] ) { check_admin_referer('switch-theme_' . $_GET['template']); switch_theme($_GET['template'], $_GET['stylesheet']); wp_redirect('themes.php?activated=true'); exit; } else if ( 'delete' == $_GET['action'] ) { check_admin_referer('delete-theme_' . $_GET['template']); if ( !current_user_can('update_themes') ) wp_die( __( 'Cheatin’ uh?' ) ); delete_theme($_GET['template']); wp_redirect('themes.php?deleted=true'); exit; } } $title = __('Manage Themes'); $parent_file = 'themes.php'; $help = '

' . __('Themes give your WordPress style. Once a theme is installed, you may preview it, activate it or deactivate it here.') . '

'; if ( current_user_can('install_themes') ) { $help .= '

' . sprintf(__('You can find additional themes for your site by using the new Theme Browser/Installer functionality or by browsing the WordPress Theme Directory directly and installing manually. To install a theme manually, upload its ZIP archive with the new uploader or copy its folder via FTP into your wp-content/themes directory.'), 'theme-install.php', 'theme-install.php?tab=upload' ) . '

'; $help .= '

' . __('Once a theme is uploaded, you should see it on this page.') . '

' ; } add_contextual_help($current_screen, $help); add_thickbox(); wp_enqueue_script( 'theme-preview' ); require_once('admin-header.php'); if( is_multisite() && is_super_admin() ) { ?>

Themes Admin page before they appear here.'); ?>

widgets settings page to configure them.'), admin_url('widgets.php') ); ?>

Visit site'), get_bloginfo('url') . '/'); ?>

name]); uksort( $themes, "strnatcasecmp" ); $theme_total = count( $themes ); $per_page = 15; if ( isset( $_GET['pagenum'] ) ) $page = absint( $_GET['pagenum'] ); if ( empty($page) ) $page = 1; $start = $offset = ( $page - 1 ) * $per_page; $page_links = paginate_links( array( 'base' => add_query_arg( 'pagenum', '%#%' ) . '#themenav', 'format' => '', 'prev_text' => __('«'), 'next_text' => __('»'), 'total' => ceil($theme_total / $per_page), 'current' => $page )); $themes = array_slice( $themes, $start, $per_page ); /** * Check if there is an update for a theme available. * * Will display link, if there is an update available. * * @since 2.7.0 * * @param object $theme Theme data object. * @return bool False if no valid info was passed. */ function theme_update_available( $theme ) { static $themes_update; if ( is_multisite() && !is_super_admin() ) return; if ( !isset($themes_update) ) $themes_update = get_site_transient('update_themes'); if ( is_object($theme) && isset($theme->stylesheet) ) $stylesheet = $theme->stylesheet; elseif ( is_array($theme) && isset($theme['Stylesheet']) ) $stylesheet = $theme['Stylesheet']; else return false; //No valid info passed. if ( isset($themes_update->response[ $stylesheet ]) ) { $update = $themes_update->response[ $stylesheet ]; $theme_name = is_object($theme) ? $theme->name : (is_array($theme) ? $theme['Name'] : ''); $details_url = add_query_arg(array('TB_iframe' => 'true', 'width' => 1024, 'height' => 800), $update['url']); //Theme browser inside WP? replace this, Also, theme preview JS will override this on the available list. $update_url = wp_nonce_url('update.php?action=upgrade-theme&theme=' . urlencode($stylesheet), 'upgrade-theme_' . $stylesheet); $update_onclick = 'onclick="if ( confirm(\'' . esc_js( __("Upgrading this theme will lose any customizations you have made. 'Cancel' to stop, 'OK' to upgrade.") ) . '\') ) {return true;}return false;"'; if ( ! current_user_can('update_themes') ) printf( '

' . __('There is a new version of %1$s available. View version %3$s Details.') . '

', $theme_name, $details_url, $update['new_version']); else if ( empty($update->package) ) printf( '

' . __('There is a new version of %1$s available. View version %3$s Details automatic upgrade unavailable for this theme.') . '

', $theme_name, $details_url, $update['new_version']); else printf( '

' . __('There is a new version of %1$s available. View version %3$s Details or upgrade automatically.') . '

', $theme_name, $details_url, $update['new_version'], $update_url, $update_onclick ); } } ?>

screenshot ) : ?> <?php _e('Current theme preview'); ?>

title, $ct->version, $ct->author) ; ?>

description; ?>

parent_theme ) { ?>

%2$s. The stylesheet files are located in %3$s. %4$s uses templates from %5$s. Changes made to the templates will affect both themes.'), $ct->title, str_replace( WP_CONTENT_DIR, '', $ct->template_dir ), str_replace( WP_CONTENT_DIR, '', $ct->stylesheet_dir ), $ct->title, $ct->parent_theme); ?>

%2$s.'), $ct->title, str_replace( WP_CONTENT_DIR, '', $ct->template_dir ), str_replace( WP_CONTENT_DIR, '', $ct->stylesheet_dir ) ); ?>

tags ) : ?>

tags); ?>

' . __( 'Displaying %s–%s of %s' ) . '%s', number_format_i18n( $start + 1 ), number_format_i18n( min( $page * $per_page, $theme_total ) ), number_format_i18n( $theme_total ), $page_links ); echo $page_links_text; ?>
$cols ) { ?> $theme_name ) { $class = array('available-theme'); if ( $row == 1 ) $class[] = 'top'; if ( $col == 1 ) $class[] = 'left'; if ( $row == $rows ) $class[] = 'bottom'; if ( $col == 3 ) $class[] = 'right'; ?>
1, 'template' => $template, 'stylesheet' => $stylesheet, 'TB_iframe' => 'true' ), $preview_link ) ); $preview_text = esc_attr( sprintf( __('Preview of “%s”'), $title ) ); $tags = $themes[$theme_name]['Tags']; $thickbox_class = 'thickbox thickbox-preview'; $activate_link = wp_nonce_url("themes.php?action=activate&template=".urlencode($template)."&stylesheet=".urlencode($stylesheet), 'switch-theme_' . $template); $activate_text = esc_attr( sprintf( __('Activate “%s”'), $title ) ); $actions = array(); $actions[] = '' . __('Activate') . ''; $actions[] = '' . __('Preview') . ''; if ( current_user_can('update_themes') ) $actions[] = '' . __('Delete') . ''; $actions = apply_filters('theme_action_links', $actions, $themes[$theme_name]); $actions = implode ( ' | ', $actions ); ?>

%2$s. The stylesheet files are located in %3$s. %4$s uses templates from %5$s. Changes made to the templates will affect both themes.'), $title, str_replace( WP_CONTENT_DIR, '', $template_dir ), str_replace( WP_CONTENT_DIR, '', $stylesheet_dir ), $title, $parent_theme); ?>

%2$s.'), $title, str_replace( WP_CONTENT_DIR, '', $template_dir ), str_replace( WP_CONTENT_DIR, '', $stylesheet_dir ) ); ?>


$page_links_text
"; ?>

"; } ?>
$title $description