[How-to] Mostrar los tags en menú desplegable

Posted on September 30th, 2008. Written by The Ghost.

Tags Menús Despegables Desde que se comenzó a usar los tags, se ha revolucionado la forma de clasificar los artículos. Palabras claves que nos ayudan a encontrar el artículo que buscamos con mayor rapidez. OJO que los tags no vienen a reemplazar las categorias, sin embargo el uso de uno o del otro o de ambos, ya dependerá del mismo autor de blog.

La forma de mostrar los tags también es fundamental y una forma muy usada son las nubes de tags (un ejemplo pueden verlo en el sidebar al costado en este mismo blog). Pero esto a la vez puede ser aburrido es por ello que en Hack WordPress, un blog que recomiendo para sacarle mejor el jugo a tu blog, han hecho un How-to donde explican muy bien como ordenar los tags dentro de un menú desplegable.

Lograrlo es muy simple, primero hay que crear una función php y para ello hay que copiar y pegar el siguiente código en tu archivo functions.php

 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
		'exclude' => '', 'include' => ''
	);
	$args = wtf_parse_args( $args, $defaults );

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

	if ( empty($tags) )
		return;

	$return = dropdown_generate_tag_cloud( $tags, $args ); // Here's where those top tags get sorted according to $args
	if ( is_wtf_error( $return ) )
		return false;
	else
		echo apply_filters( 'dropdown_tag_cloud', $return, $args );
}

function dropdown_generate_tag_cloud( $tags, $args = '' ) {
	global $wtf_rewrite;
	$defaults = array(
		'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC'
	);
	$args = wtf_parse_args( $args, $defaults );
	extract($args);

	if ( !$tags )
		return;
	$counts = $tag_links = array();
	foreach ( (array) $tags as $tag ) {
		$counts[$tag->name] = $tag->count;
		$tag_links[$tag->name] = get_tag_link( $tag->term_id );
		if ( is_wtf_error( $tag_links[$tag->name] ) )
			return $tag_links[$tag->name];
		$tag_ids[$tag->name] = $tag->term_id;
	}

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

	// SQL cannot save you; this is a second (potentially different) sort on a subset of data.
	if ( 'name' == $orderby )
		uksort($counts, 'strnatcasecmp');
	else
		asort($counts);

	if ( 'DESC' == $order )
		$counts = array_reverse( $counts, true );

	$a = array();

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

	foreach ( $counts as $tag => $count ) {
		$tag_id = $tag_ids[$tag];
		$tag_link = clean_url($tag_links[$tag]);
		$tag = str_replace(' ', ' ', wtf_specialchars( $tag ));
		$a[] = "\t


";
	}

	switch ( $format ) :
	case 'array' :
		$return =& $a;
		break;
	case 'list' :
		$return = "
    \n\t
  • "; $return .= join("
  • \n\t
  • ", $a); $return .= "
  • \n
\n"; break; default : $return = join("\n", $a); break; endswitch; return apply_filters( 'dropdown_generate_tag_cloud', $return, $tags, $args ); } ?>

Luego ubicar el lugar donde se querrá insertar el menú desplegable en el Theme y abriendo el archivo deseado, se insertará el código que llamará a la funcion php.


Espero que les sirva.

[Enlace: How to: Display your WordPress Tags in a Drop-Down Menu]

Saludos
The Ghost

This entry was posted on Tuesday, September 30th, 2008 at 5:32 pm and is filed under General. You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site. Both comments and pings are currently closed.

Comments are closed.

Subscríbete


Avisos Google

    Facebook

    Terainfo on Facebook

    Encuesta

    ¿Te gusta el nuevo diseño de Terainfo?

    Loading ... Loading ...