diff --git a/wp-includes/category-template.php b/wp-includes/category-template.php index f049b26157..dd88b5ec78 100644 --- a/wp-includes/category-template.php +++ b/wp-includes/category-template.php @@ -350,17 +350,11 @@ function wp_tag_cloud( $args = '' ) { if ( empty( $tags ) ) return; - foreach ( $tags as $key => $tag ) { - $link = get_tag_link( $tag->term_id ); - if ( is_wp_error( $link ) ) - return false; - - $tags[ $key ]->link = $link; - $tags[ $key ]->id = $tag->term_id; - } - $return = wp_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args + if ( is_wp_error( $return ) ) + return false; + $return = apply_filters( 'wp_tag_cloud', $return, $args ); if ( 'array' == $args['format'] ) @@ -383,19 +377,22 @@ function wp_tag_cloud( $args = '' ) { function wp_generate_tag_cloud( $tags, $args = '' ) { global $wp_rewrite; $defaults = array( - 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', - 'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC', - 'single_text' => '%d topic', 'multiple_text' => '%d topics' + 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45, + 'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC' ); $args = wp_parse_args( $args, $defaults ); extract( $args ); if ( empty( $tags ) ) return; - - $counts = array(); - foreach ( (array) $tags as $key => $tag ) - $counts[ $key ] = $tag->count; + $counts = $tag_links = array(); + foreach ( (array) $tags as $tag ) { + $counts[$tag->name] = $tag->count; + $tag_links[$tag->name] = get_tag_link( $tag->term_id ); + if ( is_wp_error( $tag_links[$tag->name] ) ) + return $tag_links[$tag->name]; + $tag_ids[$tag->name] = $tag->term_id; + } $min_count = min( $counts ); $spread = max( $counts ) - $min_count; @@ -426,13 +423,12 @@ function wp_generate_tag_cloud( $tags, $args = '' ) { $rel = ( is_object( $wp_rewrite ) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : ''; - foreach ( $counts as $key => $count ) { - $tag_link = clean_url( $tags[ $key ]->link ); - $tag_id = $tags[ $key ]->id; - $tag_name = $tags[ $key ]->name; - $a[] = "$tag_name"; + . "$unit;'>$tag"; } switch ( $format ) :