Oferta SiteGround Black Friday

Como mostrar las Tags en un menú desplegable

Las Tags son algo práctico en un blog, pues ayudan a tus lectores a saber de que cuestiones sueles publicar, y una vez ha quedado clara la diferencia entre categorías y tags, vamos a ver como se pueden mostrar de un modo – iba a decir menos tradicional, pero en realidad igual es justo al contrario – … bueno, no sé.

El caso es que lo que mas se observa estos días son las Nubes de Tags, pero como esto ya lo sabes hacer de varias maneras, y de hecho viene predefinido en la mayoría de las versiones de WordPress, veamos un modo distinto de mostrar las tags: en forma de lista desplegable.

Esto puede ser muy útil si tienes muchas, si por algún motivo necesitas que ocupen menos espacio en la portada de tu blog, o igual hasta por cuestiones estéticas.

Para hacerlo debes, primero, editar el fichero functions.php de tu plantilla y añadir este código:

<?php
function dropdown_tag_cloud( $args = '' ) {
	$defaults = array(
		'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC',
		'exclude' => '', 'include' => ''
	);
	$args = wp_parse_args( $args, $defaults );
	$tags = get_tags( array_merge($args, array('orderby' => 'count', 'order' => 'DESC')) ); // Siempre hace la query a las tags superiores
	if ( empty($tags) )
		return;
	$return = dropdown_generate_tag_cloud( $tags, $args ); // Aqui es donde se ordenan las tags de acuerdo a los $args
	if ( is_wp_error( $return ) )
		return false;
	else
		echo apply_filters( 'dropdown_tag_cloud', $return, $args );
}
function dropdown_generate_tag_cloud( $tags, $args = '' ) {
	global $wp_rewrite;
	$defaults = array(
		'smallest' => 8, 'largest' => 22, 'unit' => 'pt', 'number' => 45,
		'format' => 'flat', 'orderby' => 'name', 'order' => 'ASC'
	);
	$args = wp_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_wp_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 no puede salvarte; este es un segundo (y potencialmente diferente) orden en una secuencia de datos.
	if ( 'name' == $orderby )
		uksort($counts, 'strnatcasecmp');
	else
		asort($counts);
	if ( 'DESC' == $order )
		$counts = array_reverse( $counts, true );
	$a = array();
	$rel = ( is_object($wp_rewrite) && $wp_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(' ', '&nbsp;', wp_specialchars( $tag ));
		$a[] = "\t<option value='$tag_link'>$tag ($count)</option>";
	}
	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( 'dropdown_generate_tag_cloud', $return, $tags, $args );
}
?>

Una vez hayas guardado el fichero con los cambios solo tienes que abrir el archivo de tu theme que muestre la barra lateral (pues es de suponer que quieras mostrar ahí la lista de tags), normalmente llamado sidebar.php o similar, y añadas una función que llame al código que has insertado en el archivo functions.php, esta:

<select name="tag-dropdown" onchange="document.location.href=this.options[this.selectedIndex].value;">
	<option value="#">Lista de Tags</option>
	<?php dropdown_tag_cloud('number=0&order=asc'); ?>
</select>

Ya está, con eso tienes una lista desplegable de Tags, quizás mas fácilmente legible que las nubes de tags.

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en los emoticonos para valorarlo!

Promedio de puntuación 0 / 5. Total de votos: 0

Hasta ahora ¡no hay votos!. Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Ayúdame a mejorar este contenido!

Por favor, dime, ¿cómo puedo mejorarlo?

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado. ¡Ah! ¿te funciona? pues entonces no he dicho nada :)

Sobre el autor

6 comentarios en “Como mostrar las Tags en un menú desplegable”

  1. Hola, a mi me parece útil, pero me da error. Si lo pongo en el sidebar, directamente no sale nada. Si lo pongo como texto (widget), sale el desplegable, pero está vacio…

  2. Que tal amigos, yo estoy tratando de poner una categoría pero de post en desplegable, utilicé el código con una categoría y funciona bien, pero con varias ya no funciona. aca dejo el código

    <code>

    Alto Parana

    ————————————-

    <option value="">

    Central

    ————————————-

    <option value="">

    </code>

    CON UN LOOP FUNCIONA PERFECTO, PERO CON 2 YA NO FUNCIONA, HAY ALGUNA FUNCIÓN PARA LOS POST COMO ESTA DE LOS TAGS?

    O ME PUEDEN DAR UNA MANO, MIS CONOCIMIENTOS EN PHP SON BASICOS. CONDICIONALES Y ALGUNAS COSAS MAS PERO CLASES ETC YA NO LE PEGO

  3. (un año más tarde me añado) Pues a mí sí me parece muy útil, depende del uso de las tags que cada uno en su web. Mi duda es si es posible modificar el estilo del menú desplegable, ya que es un poco "soso"…

  4. Hola, yo creo que funciona muy bien, por ejemplo un post puede pertenecer a una categoría pero tener varios tags, de este modo podemos hacer la busqueda por tag.

    Funciona perfectamente pero yo pretendo ponerlo en el header.php a modo de menu y entonces cuando quieres entrar al administrador da un error en el function, borro el código añadido, hago los cambios y luego lo vuelvo a poner… ¿hay algún modo de que no de el error?

  5. Parse error: syntax error, unexpected ':' in /homepages/29/d337767033/htdocs/wp-content/themes/piano-black/functions.php on line 430

    me da ese error y ahora no puedo entrar en: midominio.es/wp-admin q ago??

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
- Responsable: Fernando Tellado ([email protected])
- Fin del tratamiento: Moderación de comentarios para evitar spam
- Legitimación: Tu consentimiento
- Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
- Derechos: Acceso, rectificación, portabilidad, olvido

 

Scroll al inicio