[ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * WordPress Theme Installation Administration API 4 * 5 * @package WordPress 6 * @subpackage Administration 7 */ 8 9 $themes_allowedtags = array( 10 'a' => array( 11 'href' => array(), 12 'title' => array(), 13 'target' => array(), 14 ), 15 'abbr' => array( 'title' => array() ), 16 'acronym' => array( 'title' => array() ), 17 'code' => array(), 18 'pre' => array(), 19 'em' => array(), 20 'strong' => array(), 21 'div' => array(), 22 'p' => array(), 23 'ul' => array(), 24 'ol' => array(), 25 'li' => array(), 26 'h1' => array(), 27 'h2' => array(), 28 'h3' => array(), 29 'h4' => array(), 30 'h5' => array(), 31 'h6' => array(), 32 'img' => array( 33 'src' => array(), 34 'class' => array(), 35 'alt' => array(), 36 ), 37 ); 38 39 $theme_field_defaults = array( 40 'description' => true, 41 'sections' => false, 42 'tested' => true, 43 'requires' => true, 44 'rating' => true, 45 'downloaded' => true, 46 'downloadlink' => true, 47 'last_updated' => true, 48 'homepage' => true, 49 'tags' => true, 50 'num_ratings' => true, 51 ); 52 53 /** 54 * Retrieves the list of WordPress theme features (aka theme tags). 55 * 56 * @since 2.8.0 57 * 58 * @deprecated 3.1.0 Use get_theme_feature_list() instead. 59 * 60 * @return array 61 */ 62 function install_themes_feature_list() { 63 _deprecated_function( __FUNCTION__, '3.1.0', 'get_theme_feature_list()' ); 64 65 $cache = get_transient( 'wporg_theme_feature_list' ); 66 if ( ! $cache ) { 67 set_transient( 'wporg_theme_feature_list', array(), 3 * HOUR_IN_SECONDS ); 68 } 69 70 if ( $cache ) { 71 return $cache; 72 } 73 74 $feature_list = themes_api( 'feature_list', array() ); 75 if ( is_wp_error( $feature_list ) ) { 76 return array(); 77 } 78 79 set_transient( 'wporg_theme_feature_list', $feature_list, 3 * HOUR_IN_SECONDS ); 80 81 return $feature_list; 82 } 83 84 /** 85 * Displays search form for searching themes. 86 * 87 * @since 2.8.0 88 * 89 * @param bool $type_selector 90 */ 91 function install_theme_search_form( $type_selector = true ) { 92 $type = isset( $_REQUEST['type'] ) ? wp_unslash( $_REQUEST['type'] ) : 'term'; 93 $term = isset( $_REQUEST['s'] ) ? wp_unslash( $_REQUEST['s'] ) : ''; 94 if ( ! $type_selector ) { 95 echo '<p class="install-help">' . __( 'Search for themes by keyword.' ) . '</p>'; 96 } 97 ?> 98 <form id="search-themes" method="get"> 99 <input type="hidden" name="tab" value="search" /> 100 <?php if ( $type_selector ) : ?> 101 <label class="screen-reader-text" for="typeselector"> 102 <?php 103 /* translators: Hidden accessibility text. */ 104 _e( 'Type of search' ); 105 ?> 106 </label> 107 <select name="type" id="typeselector"> 108 <option value="term" <?php selected( 'term', $type ); ?>><?php _e( 'Keyword' ); ?></option> 109 <option value="author" <?php selected( 'author', $type ); ?>><?php _e( 'Author' ); ?></option> 110 <option value="tag" <?php selected( 'tag', $type ); ?>><?php _ex( 'Tag', 'Theme Installer' ); ?></option> 111 </select> 112 <label class="screen-reader-text" for="s"> 113 <?php 114 switch ( $type ) { 115 case 'term': 116 /* translators: Hidden accessibility text. */ 117 _e( 'Search by keyword' ); 118 break; 119 case 'author': 120 /* translators: Hidden accessibility text. */ 121 _e( 'Search by author' ); 122 break; 123 case 'tag': 124 /* translators: Hidden accessibility text. */ 125 _e( 'Search by tag' ); 126 break; 127 } 128 ?> 129 </label> 130 <?php else : ?> 131 <label class="screen-reader-text" for="s"> 132 <?php 133 /* translators: Hidden accessibility text. */ 134 _e( 'Search by keyword' ); 135 ?> 136 </label> 137 <?php endif; ?> 138 <input type="search" name="s" id="s" size="30" value="<?php echo esc_attr( $term ); ?>" autofocus="autofocus" /> 139 <?php submit_button( __( 'Search' ), '', 'search', false ); ?> 140 </form> 141 <?php 142 } 143 144 /** 145 * Displays tags filter for themes. 146 * 147 * @since 2.8.0 148 */ 149 function install_themes_dashboard() { 150 install_theme_search_form( false ); 151 ?> 152 <h4><?php _e( 'Feature Filter' ); ?></h4> 153 <p class="install-help"><?php _e( 'Find a theme based on specific features.' ); ?></p> 154 155 <form method="get"> 156 <input type="hidden" name="tab" value="search" /> 157 <?php 158 $feature_list = get_theme_feature_list(); 159 echo '<div class="feature-filter">'; 160 161 foreach ( (array) $feature_list as $feature_name => $features ) { 162 $feature_name = esc_html( $feature_name ); 163 echo '<div class="feature-name">' . $feature_name . '</div>'; 164 165 echo '<ol class="feature-group">'; 166 foreach ( $features as $feature => $feature_name ) { 167 $feature_name = esc_html( $feature_name ); 168 $feature = esc_attr( $feature ); 169 ?> 170 171 <li> 172 <input type="checkbox" name="features[]" id="feature-id-<?php echo $feature; ?>" value="<?php echo $feature; ?>" /> 173 <label for="feature-id-<?php echo $feature; ?>"><?php echo $feature_name; ?></label> 174 </li> 175 176 <?php } ?> 177 </ol> 178 <br class="clear" /> 179 <?php 180 } 181 ?> 182 183 </div> 184 <br class="clear" /> 185 <?php submit_button( __( 'Find Themes' ), '', 'search' ); ?> 186 </form> 187 <?php 188 } 189 190 /** 191 * Displays a form to upload themes from zip files. 192 * 193 * @since 2.8.0 194 */ 195 function install_themes_upload() { 196 ?> 197 <p class="install-help"><?php _e( 'If you have a theme in a .zip format, you may install or update it by uploading it here.' ); ?></p> 198 <form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo esc_url( self_admin_url( 'update.php?action=upload-theme' ) ); ?>"> 199 <?php wp_nonce_field( 'theme-upload' ); ?> 200 <label class="screen-reader-text" for="themezip"> 201 <?php 202 /* translators: Hidden accessibility text. */ 203 _e( 'Theme zip file' ); 204 ?> 205 </label> 206 <input type="file" id="themezip" name="themezip" accept=".zip" /> 207 <?php submit_button( _x( 'Install Now', 'theme' ), '', 'install-theme-submit', false ); ?> 208 </form> 209 <?php 210 } 211 212 /** 213 * Prints a theme on the Install Themes pages. 214 * 215 * @deprecated 3.4.0 216 * 217 * @global WP_Theme_Install_List_Table $wp_list_table 218 * 219 * @param object $theme 220 */ 221 function display_theme( $theme ) { 222 _deprecated_function( __FUNCTION__, '3.4.0' ); 223 global $wp_list_table; 224 if ( ! isset( $wp_list_table ) ) { 225 $wp_list_table = _get_list_table( 'WP_Theme_Install_List_Table' ); 226 } 227 $wp_list_table->prepare_items(); 228 $wp_list_table->single_row( $theme ); 229 } 230 231 /** 232 * Displays theme content based on theme list. 233 * 234 * @since 2.8.0 235 * 236 * @global WP_Theme_Install_List_Table $wp_list_table 237 */ 238 function display_themes() { 239 global $wp_list_table; 240 241 if ( ! isset( $wp_list_table ) ) { 242 $wp_list_table = _get_list_table( 'WP_Theme_Install_List_Table' ); 243 } 244 $wp_list_table->prepare_items(); 245 $wp_list_table->display(); 246 } 247 248 /** 249 * Displays theme information in dialog box form. 250 * 251 * @since 2.8.0 252 * 253 * @global WP_Theme_Install_List_Table $wp_list_table 254 */ 255 function install_theme_information() { 256 global $wp_list_table; 257 258 $theme = themes_api( 'theme_information', array( 'slug' => wp_unslash( $_REQUEST['theme'] ) ) ); 259 260 if ( is_wp_error( $theme ) ) { 261 wp_die( $theme ); 262 } 263 264 iframe_header( __( 'Theme Installation' ) ); 265 if ( ! isset( $wp_list_table ) ) { 266 $wp_list_table = _get_list_table( 'WP_Theme_Install_List_Table' ); 267 } 268 $wp_list_table->theme_installer_single( $theme ); 269 iframe_footer(); 270 exit; 271 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated : Thu Nov 21 08:20:01 2024 | Cross-referenced by PHPXref |