WordPress.org

Make WordPress Core

Ticket #7165: 7165.diff

File 7165.diff, 3.1 KB (added by DD32, 10 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        }