WordPress.org

Make WordPress Core

Ticket #7165: 7165.diff

File 7165.diff, 3.1 KB (added by DD32, 7 years ago)

Note: PHPDoc needs completing.

  • wp-includes/category-template.php

     
    347347        if ( empty($tags) ) 
    348348                return; 
    349349 
     350        foreach ( $tags as $key => $tag ) { 
     351                $link = get_tag_link( $tag->term_id ); 
     352                if ( is_wp_error( $link ) ) 
     353                        return false; 
     354 
     355                $tags[ $key ]->link = $link; 
     356                $tags[ $key ]->id = $tag->term_id; 
     357        } 
     358 
    350359        $return = wp_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args 
    351360 
    352         if ( is_wp_error( $return ) ) 
    353                 return false; 
    354  
    355361        $return = apply_filters( 'wp_tag_cloud', $return, $args ); 
    356362 
    357363        if ( 'array' == $args['format'] ) 
     
    360366        echo $return; 
    361367} 
    362368 
    363 // $tags = prefetched tag array ( get_tags() ) 
    364 // $args['format'] = 'flat' => whitespace separated, 'list' => UL, 'array' => array() 
    365 // $args['orderby'] = 'name', 'count' 
     369/** 
     370 * Generates a tag cloud (heatmap) from provided data 
     371 * 
     372 * TODO: Complete 
     373 *  
     374 * @since 2.6  
     375 * 
     376 * $tags = array of objects with the properties 'name', 'link', 'id', and 'count' 
     377 * $args['format'] = 'flat' => whitespace separated, 'list' => UL, 'array' => array() 
     378 * $args['orderby'] = 'name', 'count' 
     379*/ 
    366380function wp_generate_tag_cloud( $tags, $args = '' ) { 
    367381        global $wp_rewrite; 
    368382        $defaults = array( 
    369                 'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45, 
    370                 'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC' 
     383                'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 
     384                'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC', 
     385                'single_text' => '%d topic', 'multiple_text' => '%d topics' 
    371386        ); 
    372387        $args = wp_parse_args( $args, $defaults ); 
    373388        extract($args); 
    374389 
    375         if ( !$tags ) 
     390        if ( empty($tags) ) 
    376391                return; 
    377         $counts = $tag_links = array(); 
    378         foreach ( (array) $tags as $tag ) { 
    379                 $counts[$tag->name] = $tag->count; 
    380                 $tag_links[$tag->name] = get_tag_link( $tag->term_id ); 
    381                 if ( is_wp_error( $tag_links[$tag->name] ) ) 
    382                         return $tag_links[$tag->name]; 
    383                 $tag_ids[$tag->name] = $tag->term_id; 
    384         } 
    385392 
     393        $counts = array(); 
     394        foreach ( (array) $tags as $tag ) 
     395                $counts[ $tag->name ] = $tag->count; 
     396 
    386397        $min_count = min($counts); 
    387398        $spread = max($counts) - $min_count; 
    388399        if ( $spread <= 0 ) 
     
    413424        $rel = ( is_object($wp_rewrite) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' : ''; 
    414425 
    415426        foreach ( $counts as $tag => $count ) { 
    416                 $tag_id = $tag_ids[$tag]; 
    417                 $tag_link = clean_url($tag_links[$tag]); 
     427                $tag_link = clean_url( $tags[ $tag ]->link ); 
     428                $tag_id = $tags[ $tag ]->id; 
    418429                $tag = str_replace(' ', '&nbsp;', wp_specialchars( $tag )); 
    419                 $a[] = "<a href='$tag_link' class='tag-link-$tag_id' title='" . attribute_escape( sprintf( __ngettext('%d topic','%d topics',$count), $count ) ) . "'$rel style='font-size: " . 
     430                 
     431                $a[] = "<a href='$tag_link' class='tag-link-$tag_id' title='" . attribute_escape( sprintf( __ngettext($single_text, $multiple_text, $count), $count ) ) . "'$rel style='font-size: " . 
    420432                        ( $smallest + ( ( $count - $min_count ) * $font_step ) ) 
    421433                        . "$unit;'>$tag</a>"; 
    422434        }