Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/03/2009, 11:45
naked
 
Fecha de Ingreso: marzo-2009
Mensajes: 71
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Nube de etiquetas no funciona correctamente

Buscando he encontrado que la función wp_tag_cloud() está en wp-includes/category-template.php

El código que hay es:

Código PHP:
function wp_tag_cloud$args '' ) {
    
$defaults = array(
        
'smallest' => 8'largest' => 22'unit' => 'pt''number' => 45,
        
'format' => 'flat''orderby' => 'name''order' => 'ASC',
        
'exclude' => '''include' => '''link' => 'view'
    
);
    
$args wp_parse_args$args$defaults );

    
$tags get_tagsarray_merge$args, array( 'orderby' => 'count''order' => 'DESC' ) ) ); // Always query top tags

    
if ( empty( $tags ) )
        return;

    foreach ( 
$tags as $key => $tag ) {
        if ( 
'edit' == $args['link'] )
            
$link get_edit_tag_link$tag->term_id );
        else
            
$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

    
$return apply_filters'wp_tag_cloud'$return$args );

    if ( 
'array' == $args['format'] )
        return 
$return;

    echo 
$return;
}

/**
 * Default text for tooltip for tag links
 *
 * @param integer $count number of posts with that tag
 * @return string text for the tooltip of a tag link.
 */
function default_topic_count_text$count ) {
    return 
sprintf__ngettext('%s topic''%s topics'$count), number_format_i18n$count ) );
}

/**
 * Generates a tag cloud (heatmap) from provided data.
 *
 * The text size is set by the 'smallest' and 'largest' arguments, which will
 * use the 'unit' argument value for the CSS text size unit. The 'format'
 * argument can be 'flat' (default), 'list', or 'array'. The flat value for the
 * 'format' argument will separate tags with spaces. The list value for the
 * 'format' argument will format the tags in a UL HTML list. The array value for
 * the 'format' argument will return in PHP array type format.
 *
 * The 'orderby' argument will accept 'name' or 'count' and defaults to 'name'.
 * The 'order' is the direction to sort, defaults to 'ASC' and can be 'DESC' or
 * 'RAND'.
 *
 * The 'number' argument is how many tags to return. By default, the limit will
 * be to return the entire tag cloud list.
 *
 * The 'topic_count_text_callback' argument is a function, which given the count
 * of the posts  with that tag returns a text for the tooltip of the tag link.
 *
 * @todo Complete functionality.
 * @since 2.3.0
 *
 * @param array $tags List of tags.
 * @param string|array $args Optional, override default arguments.
 * @return string
 */
function wp_generate_tag_cloud$tags$args '' ) {
    global 
$wp_rewrite;
    
$defaults = array(
        
'smallest' => 8'largest' => 22'unit' => 'pt''number' => 0,
        
'format' => 'flat''orderby' => 'name''order' => 'ASC',
        
'topic_count_text_callback' => 'default_topic_count_text',
    );

    if ( !isset( 
$args['topic_count_text_callback'] ) && isset( $args['single_text'] ) && isset( $args['multiple_text'] ) ) {
        
$body 'return sprintf (
            __ngettext('
.var_export($args['single_text'], true).', '.var_export($args['multiple_text'], true).', $count),
            number_format_i18n( $count ));'
;
        
$args['topic_count_text_callback'] = create_function('$count'$body);
    }

    
$args wp_parse_args$args$defaults );

    
extract$args );

    if ( empty( 
$tags ) )
        return;

    
// SQL cannot save you; this is a second (potentially different) sort on a subset of data.
    
if ( 'name' == $orderby )
        
uasort$tagscreate_function('$a, $b''return strnatcasecmp($a->name, $b->name);') );
    else
        
uasort$tagscreate_function('$a, $b''return ($a->count > $b->count);') );

    if ( 
'DESC' == $order )
        
$tags array_reverse$tagstrue );
    elseif ( 
'RAND' == $order ) {
        
$keys array_rand$tagscount$tags ) );
        foreach ( 
$keys as $key )
            
$temp[$key] = $tags[$key];
        
$tags $temp;
        unset( 
$temp );
    }

    if ( 
$number )
        
$tags array_slice($tags0$number);

    
$counts = array();
    foreach ( (array) 
$tags as $key => $tag )
        
$counts$key ] = $tag->count;

    
$min_count min$counts );
    
$spread max$counts ) - $min_count;
    if ( 
$spread <= )
        
$spread 1;
    
$font_spread $largest $smallest;
    if ( 
$font_spread )
        
$font_spread 1;
    
$font_step $font_spread $spread;

    
$a = array();

    
$rel = ( is_object$wp_rewrite ) && $wp_rewrite->using_permalinks() ) ? ' rel="tag"' '';

    foreach ( 
$tags as $key => $tag ) {
        
$count $counts$key ];
        
$tag_link '#' != $tag->link clean_url$tag->link ) : '#';
        
$tag_id = isset($tags$key ]->id) ? $tags$key ]->id $key;
        
$tag_name $tags$key ]->name;
        
$a[] = "<a href='$tag_link' class='tag-link-$tag_id' title='" attribute_escape$topic_count_text_callback$count ) ) . "'$rel style='font-size: " .
            ( 
$smallest + ( ( $count $min_count ) * $font_step ) )
            . 
"$unit;'>$tag_name</a>";
    }

    switch ( 
$format ) :
    case 
'array' :
        
$return =& $a;
        break;
    case 
'list' :
        
$return "<ul class='wp-tag-cloud'>\n\t<li>";
        
$return .= join"</li>\n\t<li>"$a );
        
$return .= "</li>\n</ul>\n";
        break;
    default :
        
$return join"\n"$a );
        break;
    endswitch;

    return 
apply_filters'wp_generate_tag_cloud'$return$tags$args );

He probado a cambiar en "unit=" a "em" pero sigue sucediendo lo mismo. Sigo igual o mas perdido que antes.
Un saludo.