雨過天晴

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

2016.12.30

category: WordPress備忘録

tags: ,

img from: ぱくたそ

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

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

どういう感じかというと、
サイドバー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="' . get_bloginfo( url ) . '/archives/tag/' . $tag->slug . '/">' . $tag->name . '<span>' . $tag->count . '</span></a></li>' . "\n";
     echo '</ul>';
     }
   }
   ?>
 </aside>

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

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