[WordPress] タグ版wp_list_categories

公開

スポンサーリンク

WordPressのwp_list_categories()はカテゴリー一覧をリスト表示してくれるタグです。当然タグ一覧を表示してくれるwp_list_tags()もあるのだろうと思ったらないんですね。

とはいえget_tags()wp_list_categories()も内部的にはget_terms()を使っていますから、両者とも特定の目的に特化したラッパー関数にすぎません。(正確にはwp_list_categories()は内部でget_categoriesを呼び出し、get_categoriesがさらにget_terms()を呼び出している)

ということで、wp_list_categories()のタグ版ともいうべきwp_list_tags()にあたる関数を作成している方がいましたので紹介させていただきます。

wordpress : Listing tags like wp_list_categories – Enigmatic Apeから

function theme_list_tags ( $args ) {
  $current_url = $_SERVER['REQUEST_URI'];
  $tags = get_tags( $args );
  $html = '<div class="taglist">';
  foreach ($tags as $tag){
    $tag_link = get_tag_link($tag->term_id);
    $html .= "<li class='tag_item {$tag->slug}";
    
    if(  substr($tag_link, -strlen($current_url) ) === $current_url ) {
        $html.=" current-tag"; 
    }
    $html .= "'><a href='{$tag_link}'>";
    $html .= "{$tag->name}";
    
    if( $args['show_count'] == true) {
        $html .= " (".$tag->count.")";
    }
    
    $html .= "</a></li>";
  }
  $html .= '</div>';
  echo $html; 
}

上記のコードをfunction.phpにコピペして使います。関数名をwp_list_tagsにしていないのは、将来的に実装された場合にバッティングしないようにしているのでしょう。

使い方はwp_list_categories()と同じで引数はget_tags()に準じたものになります。

<?php
  $args = array(
    'orderby' => 'count' ,
    'order' => 'DESC' ,
    'show_count' => 1 ,
  );
  theme_list_tags($args);
?>

これでwp_list_categories()と同様にタグリストが表示されるようになりました。ありがたいことです。

スポンサーリンク


Comment