X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/6c8f14c09105d0afa4c1574215c59b5021040e76..fa11948979fd6a4ea5705dc613b239699a459db3:/wp-includes/theme.php?ds=sidebyside diff --git a/wp-includes/theme.php b/wp-includes/theme.php index d8c24197..e12ac74d 100644 --- a/wp-includes/theme.php +++ b/wp-includes/theme.php @@ -110,9 +110,11 @@ function wp_get_theme( $stylesheet = null, $theme_root = null ) { * Clears the cache held by get_theme_roots() and WP_Theme. * * @since 3.5.0 + * @param bool $clear_update_cache Whether to clear the Theme updates cache */ -function wp_clean_themes_cache() { - delete_site_transient('update_themes'); +function wp_clean_themes_cache( $clear_update_cache = true ) { + if ( $clear_update_cache ) + delete_site_transient( 'update_themes' ); search_theme_directories( true ); foreach ( wp_get_themes( array( 'errors' => null ) ) as $theme ) $theme->cache_delete(); @@ -340,7 +342,7 @@ function search_theme_directories( $force = false ) { // Set up maybe-relative, maybe-absolute array of theme directories. // We always want to return absolute, but we need to cache relative - // use in for get_theme_root(). + // to use in get_theme_root(). foreach ( $wp_theme_directories as $theme_root ) { if ( 0 === strpos( $theme_root, WP_CONTENT_DIR ) ) $relative_theme_roots[ str_replace( WP_CONTENT_DIR, '', $theme_root ) ] = $theme_root; @@ -373,8 +375,10 @@ function search_theme_directories( $force = false ) { // Start with directories in the root of the current theme directory. $dirs = @ scandir( $theme_root ); - if ( ! $dirs ) - return false; + if ( ! $dirs ) { + trigger_error( "$theme_root is not readable", E_USER_NOTICE ); + continue; + } foreach ( $dirs as $dir ) { if ( ! is_dir( $theme_root . '/' . $dir ) || $dir[0] == '.' || $dir == 'CVS' ) continue; @@ -390,8 +394,10 @@ function search_theme_directories( $force = false ) { // wp-content/themes/a-folder-of-themes/* // wp-content/themes is $theme_root, a-folder-of-themes is $dir, then themes are $sub_dirs $sub_dirs = @ scandir( $theme_root . '/' . $dir ); - if ( ! $sub_dirs ) - return false; + if ( ! $sub_dirs ) { + trigger_error( "$theme_root/$dir is not readable", E_USER_NOTICE ); + continue; + } foreach ( $sub_dirs as $sub_dir ) { if ( ! is_dir( $theme_root . '/' . $dir . '/' . $sub_dir ) || $dir[0] == '.' || $dir == 'CVS' ) continue; @@ -544,7 +550,7 @@ function locale_stylesheet() { /** * Start preview theme output buffer. * - * Will only preform task if the user has permissions and template and preview + * Will only perform task if the user has permissions and template and preview * query variables exist. * * @since 2.6.0 @@ -631,7 +637,7 @@ function preview_theme_ob_filter( $content ) { */ function preview_theme_ob_filter_callback( $matches ) { if ( strpos($matches[4], 'onclick') !== false ) - $matches[4] = preg_replace('#onclick=([\'"]).*?(?. (?. (? 1, 'template' => $_GET['template'], 'stylesheet' => @$_GET['stylesheet'], 'preview_iframe' => 1 ), $matches[3] ); + $stylesheet = isset( $_GET['stylesheet'] ) ? $_GET['stylesheet'] : ''; + $template = isset( $_GET['template'] ) ? $_GET['template'] : ''; + + $link = add_query_arg( array( 'preview' => 1, 'template' => $template, 'stylesheet' => $stylesheet, 'preview_iframe' => 1 ), $matches[3] ); if ( 0 === strpos($link, 'preview=1') ) $link = "?$link"; return $matches[1] . esc_attr( $link ) . $matches[4]; @@ -981,12 +990,12 @@ function is_random_header_image( $type = 'any' ) { } /** - * Display header image path. + * Display header image URL. * * @since 2.1.0 */ function header_image() { - echo get_header_image(); + echo esc_url( get_header_image() ); } /** @@ -1013,8 +1022,10 @@ function get_uploaded_header_images() { $header_images[$header_index]['attachment_id'] = $header->ID; $header_images[$header_index]['url'] = $url; $header_images[$header_index]['thumbnail_url'] = $url; - $header_images[$header_index]['width'] = $header_data['width']; - $header_images[$header_index]['height'] = $header_data['height']; + if ( isset( $header_data['width'] ) ) + $header_images[$header_index]['width'] = $header_data['width']; + if ( isset( $header_data['height'] ) ) + $header_images[$header_index]['height'] = $header_data['height']; } return $header_images; @@ -1262,6 +1273,20 @@ function add_theme_support( $feature ) { $args[0] = array_intersect( $args[0], array_keys( get_post_format_slugs() ) ); break; + case 'html5' : + // You can't just pass 'html5', you need to pass an array of types. + if ( empty( $args[0] ) ) { + $args = array( 0 => array( 'comment-list', 'comment-form', 'search-form' ) ); + } elseif ( ! is_array( $args[0] ) ) { + _doing_it_wrong( "add_theme_support( 'html5' )", 'You need to pass an array of types.', '3.6.1' ); + return false; + } + + // Calling 'html5' again merges, rather than overwrites. + if ( isset( $_wp_theme_features['html5'] ) ) + $args[0] = array_merge( $_wp_theme_features['html5'][0], $args[0] ); + break; + case 'custom-header-uploads' : return add_theme_support( 'custom-header', array( 'uploads' => true ) ); break; @@ -1489,7 +1514,7 @@ function _remove_theme_support( $feature ) { switch ( $feature ) { case 'custom-header' : - if ( false === did_action( 'wp_loaded', '_custom_header_background_just_in_time' ) ) + if ( ! did_action( 'wp_loaded' ) ) break; $support = get_theme_support( 'custom-header' ); if ( $support[0]['wp-head-callback'] ) @@ -1499,7 +1524,7 @@ function _remove_theme_support( $feature ) { break; case 'custom-background' : - if ( false === did_action( 'wp_loaded', '_custom_header_background_just_in_time' ) ) + if ( ! did_action( 'wp_loaded' ) ) break; $support = get_theme_support( 'custom-background' ); remove_action( 'wp_head', $support[0]['wp-head-callback'] ); @@ -1545,11 +1570,15 @@ function current_theme_supports( $feature ) { return in_array( $content_type, $_wp_theme_features[$feature][0] ); break; + case 'html5': case 'post-formats': // specific post formats can be registered by passing an array of types to // add_theme_support() - $post_format = $args[0]; - return in_array( $post_format, $_wp_theme_features[$feature][0] ); + + // Specific areas of HTML5 support *must* be passed via an array to add_theme_support() + + $type = $args[0]; + return in_array( $type, $_wp_theme_features[$feature][0] ); break; case 'custom-header':