Blogunuzun ana sayfasında etiketleri nasıl sergiliyorsunuz? Çoğumuz etiket bulutu kullanıyor. Peki ya daha derli toplu duran, etiket bulutunun okunamama sorununu çözen bir etiket sergileme yöntemi yok mu? Alt alta yazmak tabii ki en kolayı fakat çoğumuzun blogunda yüzlerce hatta binlerce etiket var. Bu yazımızda sizlere etiketleri hem çok az yer kaplatıp hem de alt alta dizmenin bir yolu olan dropdown menu(açılır menü) ile kullanmaktan bahsedeceğiz.
Bunun için ilk yapacağımız şey fonksiyon oluşturmak. Aşağıdaki kodları functions.php‘ ye kopyalayın:
<?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'>\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 );
}
?>
Bitti, artık etiketlerinizi dropdown menüde gösterilmesine yarayan fonksiyonumuzu kullanabilirsiniz. Sadece temanızda görünmesini istediğiniz yeri açın(genelde sidebar.php) ve istediğiniz yerine aşağıdaki kodu kopyalayın:
<select name="tag-dropdown"> <option value="#">Liste d'auteurs</option> </select>
İngilizce’den Türkçe’ye Çeviridir. Orijinal metin: WpHacks.
başarılı bir çalışma tekrardan teşekkurler
name=”tag-dropdown” a başka bir değerin önceden atılıp atılmadığına dikkat edin derim.