[ Index ] |
PHP Cross Reference of WordPress |
[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"><?php _e( 'Type of search' ); ?></label> 102 <select name="type" id="typeselector"> 103 <option value="term" <?php selected( 'term', $type ); ?>><?php _e( 'Keyword' ); ?></option> 104 <option value="author" <?php selected( 'author', $type ); ?>><?php _e( 'Author' ); ?></option> 105 <option value="tag" <?php selected( 'tag', $type ); ?>><?php _ex( 'Tag', 'Theme Installer' ); ?></option> 106 </select> 107 <label class="screen-reader-text" for="s"> 108 <?php 109 switch ( $type ) { 110 case 'term': 111 _e( 'Search by keyword' ); 112 break; 113 case 'author': 114 _e( 'Search by author' ); 115 break; 116 case 'tag': 117 _e( 'Search by tag' ); 118 break; 119 } 120 ?> 121 </label> 122 <?php else : ?> 123 <label class="screen-reader-text" for="s"><?php _e( 'Search by keyword' ); ?></label> 124 <?php endif; ?> 125 <input type="search" name="s" id="s" size="30" value="<?php echo esc_attr( $term ); ?>" autofocus="autofocus" /> 126 <?php submit_button( __( 'Search' ), '', 'search', false ); ?> 127 </form> 128 <?php 129 } 130 131 /** 132 * Displays tags filter for themes. 133 * 134 * @since 2.8.0 135 */ 136 function install_themes_dashboard() { 137 install_theme_search_form( false ); 138 ?> 139 <h4><?php _e( 'Feature Filter' ); ?></h4> 140 <p class="install-help"><?php _e( 'Find a theme based on specific features.' ); ?></p> 141 142 <form method="get"> 143 <input type="hidden" name="tab" value="search" /> 144 <?php 145 $feature_list = get_theme_feature_list(); 146 echo '<div class="feature-filter">'; 147 148 foreach ( (array) $feature_list as $feature_name => $features ) { 149 $feature_name = esc_html( $feature_name ); 150 echo '<div class="feature-name">' . $feature_name . '</div>'; 151 152 echo '<ol class="feature-group">'; 153 foreach ( $features as $feature => $feature_name ) { 154 $feature_name = esc_html( $feature_name ); 155 $feature = esc_attr( $feature ); 156 ?> 157 158 <li> 159 <input type="checkbox" name="features[]" id="feature-id-<?php echo $feature; ?>" value="<?php echo $feature; ?>" /> 160 <label for="feature-id-<?php echo $feature; ?>"><?php echo $feature_name; ?></label> 161 </li> 162 163 <?php } ?> 164 </ol> 165 <br class="clear" /> 166 <?php 167 } 168 ?> 169 170 </div> 171 <br class="clear" /> 172 <?php submit_button( __( 'Find Themes' ), '', 'search' ); ?> 173 </form> 174 <?php 175 } 176 177 /** 178 * @since 2.8.0 179 */ 180 function install_themes_upload() { 181 ?> 182 <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> 183 <form method="post" enctype="multipart/form-data" class="wp-upload-form" action="<?php echo self_admin_url( 'update.php?action=upload-theme' ); ?>"> 184 <?php wp_nonce_field( 'theme-upload' ); ?> 185 <label class="screen-reader-text" for="themezip"><?php _e( 'Theme zip file' ); ?></label> 186 <input type="file" id="themezip" name="themezip" accept=".zip" /> 187 <?php submit_button( __( 'Install Now' ), '', 'install-theme-submit', false ); ?> 188 </form> 189 <?php 190 } 191 192 /** 193 * Prints a theme on the Install Themes pages. 194 * 195 * @deprecated 3.4.0 196 * 197 * @global WP_Theme_Install_List_Table $wp_list_table 198 * 199 * @param object $theme 200 */ 201 function display_theme( $theme ) { 202 _deprecated_function( __FUNCTION__, '3.4.0' ); 203 global $wp_list_table; 204 if ( ! isset( $wp_list_table ) ) { 205 $wp_list_table = _get_list_table( 'WP_Theme_Install_List_Table' ); 206 } 207 $wp_list_table->prepare_items(); 208 $wp_list_table->single_row( $theme ); 209 } 210 211 /** 212 * Displays theme content based on theme list. 213 * 214 * @since 2.8.0 215 * 216 * @global WP_Theme_Install_List_Table $wp_list_table 217 */ 218 function display_themes() { 219 global $wp_list_table; 220 221 if ( ! isset( $wp_list_table ) ) { 222 $wp_list_table = _get_list_table( 'WP_Theme_Install_List_Table' ); 223 } 224 $wp_list_table->prepare_items(); 225 $wp_list_table->display(); 226 227 } 228 229 /** 230 * Displays theme information in dialog box form. 231 * 232 * @since 2.8.0 233 * 234 * @global WP_Theme_Install_List_Table $wp_list_table 235 */ 236 function install_theme_information() { 237 global $wp_list_table; 238 239 $theme = themes_api( 'theme_information', array( 'slug' => wp_unslash( $_REQUEST['theme'] ) ) ); 240 241 if ( is_wp_error( $theme ) ) { 242 wp_die( $theme ); 243 } 244 245 iframe_header( __( 'Theme Installation' ) ); 246 if ( ! isset( $wp_list_table ) ) { 247 $wp_list_table = _get_list_table( 'WP_Theme_Install_List_Table' ); 248 } 249 $wp_list_table->theme_installer_single( $theme ); 250 iframe_footer(); 251 exit; 252 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Dec 3 01:00:02 2024 | Cross-referenced by PHPXref 0.7.1 |