雨過天晴

タグの有無を判定して表示非表示を決める

2016.12.30

img from: ぱくたそ

この記事は2016年12月30日に書かれたものです。古い内容や非推奨要素を含む可能性がありますのでご注意ください。

サイトインフォとか自己紹介ページとか、特にタグを設定していないページ。
サイドバーの見出しに「タグ」って出てくるのがみっともない!見出しはあるけどタグはない!
でも、テンプレート分けるのも、めんどくさい!

……なので、タグのない場合は見出し自体も表示されないようにします。

どういう感じかというと、
サイドバーasideにタグ一覧を記事数付きで出したいです。

<aside>
<h2>タグ(見出し)</h2>
<ul>
<li><a href="サイトurl/archives/tag/タグのスラッグ/">タグの名前<span>タグの数</span></a></li>
</ul>
</aside>

タグの数をspanでくくってるのは、丸付き数字で出したいからです。

あとタグはサイト全体のタグじゃなくて、同じカテゴリーのものだけ引っ張ってきたい。
(たとえば、小話一覧ページなら小話についてるタグだけ、日記ページなら日記についてるタグだけ表示させる)

同カテゴリーのタグだけの表示の仕方は過去記事「タグ一覧に同じカテゴリーのタグだけを記事数付きで表示」でやった通りです。

……で、こうだ。

<aside>
   <?php if ( is_category() ) {
    $cat_id = get_query_var( 'cat' ); // 現在のカテゴリーのIDを取得
    $current_posts = get_objects_in_term( $cat_id, 'category' );  // 表示中のカテゴリーに属する投稿のIDを配列で取得
    $current_tags = wp_get_object_terms( $current_posts, 'post_tag' ); // 表示中のカテゴリーに属する投稿に付けられたタグの情報をまとめて取得
     if ( $current_tags ) {
     echo '<h2>タグ(見出し)</h2>' . "\n" . '<ul>' . "\n";
     foreach ( $current_tags as $tag )
     echo '<li><a href="' . home_url() . '/archives/tag/' . $tag->slug . '/">' . $tag->name . '<span>' . $tag->count . '</span></a></li>' . "\n";
     echo '</ul>';
     }
   }
   ?>
 </aside>

2018.1.22追記 get_bloginfo( url )が廃止になったのでhome_urlに変更

パーマリンク設定とかは自サイト設定に合わせて適宜変更してください。

自分が詳しければもうちょっとすっきり書けるような気が…するんだけど…どうだろう。
タグもthe_titleみたいにざくざく表示できたら楽なのになあ。ね。