Como adicionar uma class ao link do widget nuvem Tag?

Atualmente estou tentando adicionar estilos aos links no Tag Cloud Widget que eu consigo ver usa wp_tag_cloud() para produzir a própria nuvem. Os args no wp_tag_cloud () não incluem um nome de class que é o que eu quero, como designar o atributo do título não é muito eficiente e não permite muito crescimento. Por exemplo:

 .widget .tagcloud a[title~="1"]{ color: red; } .widget .tagcloud a[title~="2"]{ color: yellow; } .widget .tagcloud a[title~="9999"]{ color: purple; } 

Eu encontrei o filtro wp_generate_tag_cloud_data que parece ser o que eu quero, mas devo perder algo, pois não está tendo nenhum efeito. Aqui está o que eu tenho até agora:

 add_filter( 'wp_generate_tag_cloud_data', 'my_tag_cloud_data', 10, 1 ); function my_tag_cloud_data($tags_data){ foreach ( $tags as $key => $tag ) { $tag_id = isset( $tag->id ) ? $tag->id : $key; $tag_class= 'tag-link-' . $tag_id; $count = $counts[ $key ]; $real_count = $real_counts[ $key ]; if ($real_count > 20){ $tag_class= 'tag-link-' . $tag_id . ' x-large'; } elseif ($real_count > 15){ $tag_class= 'tag-link-' . $tag_id . ' large'; } elseif ($real_count > 7){ $tag_class= 'tag-link-' . $tag_id . ' medium'; } elseif ($real_count > 1){ $tag_class= 'tag-link-' . $tag_id . ' small'; } else { $tag_class= 'tag-link-' . $tag_id . 'x-small '; } if ( $translate_nooped_plural ) { $title = sprintf( translate_nooped_plural( $translate_nooped_plural, $real_count ), number_format_i18n( $real_count ) ); } else { $title = call_user_func( $args['topic_count_text_callback'], $real_count, $tag, $args ); } $tags_data[] = array( 'id' => $tag_id, 'url' => '#' != $tag->link ? $tag->link : '#', 'name' => $tag->name, 'title' => $title, 'slug' => $tag->slug, 'real_count' => $real_count, 'class' => $tag_class, 'font_size' => $args['smallest'] + ( $count - $min_count ) * $font_step, ); } return $tags_data; } 

Eu tentei jogar com a prioridade e envolvê-lo em uma function amarrada ao gancho de boot, mas sem proveito. Eu ficaria muito grato se alguém pudesse me dizer o que estou fazendo mal aqui.

Solutions Collecting From Web of "Como adicionar uma class ao link do widget nuvem Tag?"

Você só quer adicionar um nome de class com base nas contagens. Seu código acima parece que você pode ter copiado / colado de algum lugar, mas você não precisa de tudo isso.

Eu apenas testei isso com wp_generate_tag_cloud_data (# L869) e wp_tag_cloud() e está funcionando.

Infelizmente para um site de teste básico como o meu, a count pequena representa o maior número de tags para mim. Você pode querer adicionar seus tamanhos com base em um font_size normalizado. Essencialmente, faça algumas matemáticas para transformá-lo em 0-1 e selecione suas aulas com esse valor – não count .

 add_filter( 'wp_generate_tag_cloud_data', 'my_tag_cloud_data', 10, 1 ); function my_tag_cloud_data( $tags_data ) { foreach ( $tags_data as $key => $tag ) { // get tag count $count = $tag [ 'real_count' ]; // adjust the class based on the size if ( $count > 20 ) { $tags_data [ $key ] [ 'class' ] .= ' tag x-large'; } elseif ( $count > 15 ) { $tags_data [ $key ] [ 'class' ] .= ' tag large'; } elseif ( $count > 7 ) { $tags_data [ $key ] [ 'class' ] .= ' tag medium'; } elseif ( $count > 1 ) { $tags_data [ $key ] [ 'class' ] .= ' tag small'; } else { $tags_data [ $key ] [ 'class' ] .= ' tag x-small '; } } // return adjusted data return $tags_data; } 

CSS