[wp-trac] [WordPress Trac] #5191: Style tag cloud by color

WordPress Trac wp-trac at lists.automattic.com
Sat Oct 13 15:48:25 GMT 2007

#5191: Style tag cloud by color
 Reporter:  webrocker    |       Owner:  anonymous
     Type:  enhancement  |      Status:  new      
 Priority:  normal       |   Milestone:  2.5      
Component:  General      |     Version:           
 Severity:  normal       |    Keywords:           
 After looking into #5131, #5171, and #5172 I'd like to see the
 (additional) ability to style the tag cloud between two colors - like it
 is possible with the UTW Plugin ([http://www.neato.co.nz/wp-
 With the above tickets we have the ability to apply individual classes per
 tag and ignore the font-size thing, which in theory should be enough for a
 color-weighted tag-cloud. But with every additional tag one would have to
 re-define the css-stylesheet - not very Wordpressy.[[BR]][[BR]]

 It would be nice to have additional parameters in the wp_tag_cloud()
 function for the start- and end-color, and have the function "render" the
 in-between colors... like

 I guess since the font-size is already calculated in relation to the
 amount and order of the tag shown, it shouldn't be too hard to tweak the
 function to do the same for hex-color-codes?[[BR]][[BR]]

 The difficulty is to calculate the right in-between color-codes... I have
 tried to understand what is done in the appr. function (ultimate-tag-
 warrior-core.php) in UTW, but frankly, failed to understand it (and the
 comment at the beginning isn't encouraging either):
 /* This is pretty filthy.  Doing math in hex is much too weird.  It's more
 likely to work,  this way! */
         function GetColorForWeight($weight) {
                 global $maxtagcolour, $mintagcolour;
                 if ($weight) {
                         $weight = $weight/100;

                         $minr = hexdec(substr($mintagcolour, 1, 2));
                         $ming = hexdec(substr($mintagcolour, 3, 2));
                         $minb = hexdec(substr($mintagcolour, 5, 2));

                         $maxr = hexdec(substr($maxtagcolour, 1, 2));
                         $maxg = hexdec(substr($maxtagcolour, 3, 2));
                         $maxb = hexdec(substr($maxtagcolour, 5, 2));

                         $r = dechex(intval((($maxr - $minr) * $weight) +
                         $g = dechex(intval((($maxg - $ming) * $weight) +
                         $b = dechex(intval((($maxb - $minb) * $weight) +

                         if (strlen($r) == 1) $r = "0" . $r;
                         if (strlen($g) == 1) $g = "0" . $g;
                         if (strlen($b) == 1) $b = "0" . $b;

                         return "#$r$g$b";
 What do you think?

Ticket URL: <http://trac.wordpress.org/ticket/5191>
WordPress Trac <http://trac.wordpress.org/>
WordPress blogging software

More information about the wp-trac mailing list