Menampilkan Tag Dalam Bentuk Dropdown

Submitted by rismaka on July 20, 2009 at 7:00 am Tags: , , ,

Kita biasanya mengenal tag dalam bentuk awan, yang biasa disebut dengan awan tag atau tag cloud. Terlepas dari fungsinya sebagai search engine optimizer, keberadaan awan tag atau tag cloud sangat penting dalam blog, salah satunya sebagai kata kunci (keyword) yang memudahkan navigasi. Awan tag yang terdapat dalam halaman utama (homepage) juga dapat berfungsi untuk meratakan (menyebarkan) nilai pagerank ke setiap halaman yang mempunyai nilai pagerank yang lebih rendah.

list tag dalam bentuk dropdown

Ditilik dari bentuknya, awan tag kurang aksesibel untuk pembaca. Pembaca hanya dapat mengetahui jumlah posting dalam tag tertentu setelah mengarahkan mouse ke arah tag tersebut. Kini kita dapat membuat tag-tag tersebut lebih aksesibel dengan mengubahnya menjadi bentuk dropdown. Trik ini telah ditulis oleh Jean Baptiste Jung di wprecipes.

Cara Membuat Dropdown Tag

Copy kode berikut di dalam file function.php di folder theme yang kita gunakan.

< ?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')) ); // 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_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 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($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(' ', ' ', 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'>nt<li>";
		$return .= join("</li>nt<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 );
}
?>

Kemudian kita bisa menampilkan tag dropdown tersebut di sidebar atau footer, atau di bagian lain dengan memanggilnya dengan kode berikut.

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

Kita dapat menentukan jumlah tag yang akan ditampilkan dengan mengubah parameter “number=0″ dengan angka lain. Keterangan: angka 0 adalah untuk menampilkan seluruh tag yang ada.

Tag dalam bentuk awan yang telah dikustomisasi telah saya jelaskan di postingan terdahulu, Membuat Custom Tag Cloud (Awan Tag).

This entry was writen by rismaka, The Admin, A part time blogger, Biochemist, and Energy Consultant in PT. BKA. More profile on Contact.

28 Comments | Leave a respond | Back To Top

Leave a comment!