WordPress.org

Make WordPress Core


Ignore:
Timestamp:
02/24/2015 08:30:22 PM (6 years ago)
Author:
markjaquith
Message:

Add theme browsing and theme switching to the Customizer

  • Brings into core the Customizer Theme Switcher feature plugin
  • You can now browse, preview, and activate themes right from the Customizer

fixes #31303.
props celloexpressions, afercia, westonruter, folletto, designsimply

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/class-wp-customize-control.php

    r31101 r31533  
    11021102
    11031103/**
     1104 * Customize Theme Control Class
     1105 *
     1106 * @package WordPress
     1107 * @subpackage Customize
     1108 * @since 4.2.0
     1109 */
     1110class WP_Customize_Theme_Control extends WP_Customize_Control {
     1111
     1112    public $type = 'theme';
     1113    public $theme;
     1114
     1115    /**
     1116     * Refresh the parameters passed to the JavaScript via JSON.
     1117     *
     1118     * @since 4.2.0
     1119     * @uses WP_Customize_Control::to_json()
     1120     */
     1121    public function to_json() {
     1122        parent::to_json();
     1123        $this->json['theme'] = $this->theme;
     1124    }
     1125
     1126    /**
     1127     * Don't render the control content from PHP, as it's rendered via JS on load.
     1128     *
     1129     * @since 4.2.0
     1130     */
     1131    public function render_content() {}
     1132
     1133    /**
     1134     * Render a JS template for theme display.
     1135     *
     1136     * @since 4.2.0
     1137     */
     1138    public function content_template() {
     1139    ?>
     1140        <div class="theme<# if ( data.theme.active ) { #> active<# } #>" tabindex="0" aria-describedby="{{ data.theme.id }}-action {{ data.theme.id }}-name">
     1141            <# if ( data.theme.screenshot[0] ) { #>
     1142                <div class="theme-screenshot">
     1143                    <img src="{{ data.theme.screenshot[0] }}" alt="" />
     1144                </div>
     1145            <# } else { #>
     1146                <div class="theme-screenshot blank"></div>
     1147            <# } #>
     1148            <span class="more-details" id="{{ data.theme.id }}-action"><?php _e( 'Theme Details' ); ?></span>
     1149            <div class="theme-author"><?php printf( __( 'By %s' ), '{{ data.theme.author }}' ); ?></div>
     1150
     1151            <# if ( data.theme.active ) { #>
     1152                <h3 class="theme-name" id="{{ data.theme.id }}-name"><span><?php _ex( 'Previewing:', 'theme' ); ?></span> {{ data.theme.name }}</h3>
     1153            <# } else { #>
     1154                <h3 class="theme-name" id="{{ data.theme.id }}-name">{{ data.theme.name }}</h3>
     1155            <# } #>
     1156
     1157            <# if ( ! data.theme.active ) { #>
     1158                <div class="theme-actions">
     1159                    <a class="button" href="<?php echo add_query_arg( 'theme', '{{ data.theme.id }}', remove_query_arg( 'theme' ) ); ?>" target="_top"><?php _e( 'Live Preview' ); ?></a>
     1160                </div>
     1161            <# } #>
     1162        </div>
     1163    <?php
     1164    }
     1165}
     1166
     1167/**
     1168 * Customize New Theme Control Class
     1169 *
     1170 * @package WordPress
     1171 * @subpackage Customize
     1172 * @since 4.2.0
     1173 */
     1174class WP_Customize_New_Theme_Control extends WP_Customize_Control {
     1175
     1176    /**
     1177     * Render the new control.
     1178     *
     1179     * @since 4.2.0
     1180     */
     1181    public function render() {
     1182        if ( is_multisite() || ! current_user_can( 'install_themes') ) {
     1183            return;
     1184        }
     1185        ?>
     1186        <div class="theme add-new-theme">
     1187            <a href="<?php echo admin_url( 'theme-install.php' ); ?>" target="_top">
     1188                <div class="theme-screenshot">
     1189                    <span></span>
     1190                </div>
     1191                <h3 class="theme-name"><?php _e( 'Add New Theme' ); ?></h3>
     1192            </a>
     1193        </div>
     1194        <?php
     1195    }
     1196}
     1197
     1198/**
    11041199 * Widget Area Customize Control Class
    11051200 *
Note: See TracChangeset for help on using the changeset viewer.