タグの有無を判定して表示非表示を決める
2016.12.30
category: WordPress備忘録
この記事は2016年12月30日に書かれたものです。古い内容や非推奨要素を含む可能性がありますのでご注意ください。
サイトインフォとか自己紹介ページとか、特にタグを設定していないページ。
サイドバーの見出しに「タグ」って出てくるのがみっともない!見出しはあるけどタグはない!
でも、テンプレート分けるのも、めんどくさい!
……なので、タグのない場合は見出し自体も表示されないようにします。
どういう感じかというと、
サイドバーaside
にタグ一覧を記事数付きで出したいです。
<aside> <h2>タグ(見出し)</h2> <ul> <li><a href="サイトurl/archives/tag/タグのスラッグ/">タグの名前<span>タグの数</span></a></li> </ul> </aside>
タグの数をspan
でくくってるのは、丸付き数字で出したいからです。
あとタグはサイト全体のタグじゃなくて、同じカテゴリーのものだけ引っ張ってきたい。
(たとえば、小話一覧ページなら小話についてるタグだけ、日記ページなら日記についてるタグだけ表示させる)
同カテゴリーのタグだけの表示の仕方は過去記事「タグ一覧に同じカテゴリーのタグだけを記事数付きで表示」でやった通りです。
タグの有無を判定するのは以下のサイトを参考に。
・WordPress■記事にタグがあるかどうかをチェックする+タグを表示する|はろさんはろさん、聞いてください。
・タグの有無を判別する条件文@WordPress|ショウジンブログ
・WordPress■記事にタグがあるかどうかをチェックする+タグを表示する|はろさんはろさん、聞いてください。
・タグの有無を判別する条件文@WordPress|ショウジンブログ
……で、こうだ。
<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みたいにざくざく表示できたら楽なのになあ。ね。