Menampilkan Tag Dalam Bentuk Dropdown

Submitted by rismaka on July 20, 2009 – 7:00 am28 Comments
This entry was writen by Rismaka, The Admin, Biochemist (sometimes) and Data Management Staff of PT. Ex-WF. [Contact: rismaka[at]rismaka.net]

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. Caranya adalah sebagai berikut.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?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(' ', '&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 );
}
?>

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

1
2
3
4
<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). Semoga bermanfaat.

Artikel yang berhubungan:

  1. Menampilkan Kategori dalam Dua Kolom
  2. Menampilkan Update Twitter dalam Bentuk Image
  3. Membuat Custom Tag Cloud (Awan Tag)
  4. Cara Menenggelamkan Iklan dalam Postingan
  5. Cara Menampilkan Random Image

Berlangganan Artikel

Dengan berlangganan, anda akan dikirim artikel terbaru blog ini secara lengkap. Masukkan alamat email anda, kemudian tekan tombol subscribe:

Jika tidak mendapatkan informasi yang diinginkan, anda bisa manfaatkan mode pencarian berikut ini:

28 Comments »

Leave a comment!

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.