今見ている記事(wordpressのデフォルトの投稿など)が属するカテゴリーごとにサイドバーの項目の表示を分けたいときや、バナーの表示を変更するのにも使えます。
get_the_category()で投稿記事のカテゴリ関連の情報を取得
get_the_category:WordPress私的マニュアル
まずは、メンバ変数で必要な要素を取り出せる状態にします。
1 2 | $cat = get_the_category(); $cat = $cat[0]; |
get_the_category()の()内には投稿のIDが入ります。
が、省略した場合は、現在表示している投稿の情報を取得します。
get_the_category返り値のメンバ変数
ひと通り取り出して、変数に代入してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $cat_name = $cat–>name; //カテゴリ名 $cat_id = $cat–>cat_ID; //カテゴリのID $cat_slug = $cat–>slug; //カテゴリのスラッグ $cat_term = $cat–>term_id; //タームID $cat_termid = $cat–>term_taxonomy_id; //タクソノミID $cat_taxonomy = $cat–>taxonomy; //タクソノミ名 $cat_count = $cat–>count; //記事の属するカテゴリの投稿数 $cat_description = $cat–>category_description; //カテゴリのディスクリプション $parent_id = $cat–>category_parent; //親カテゴリID $parent = get_category($cat–>category_parent); $parent_catname = $parent–>cat_name;//親カテゴリ名 |
echo ‘
’ . $cat_name . ‘
’;とかで出力します。
例に使った写真の記事→WEBサイトの背景に使えるテクスチャ素材サイト8+1種!
ここで注意したいのが、タクソノミ名を出力するはずの「$cat_taxonomy = $cat->taxonomy」ですが、今回のように、投稿ページの「カテゴリ」に属する場合、かならず、返り値は「category」になるそうです…
その下の「$cat_id = $cat->cat_ID」には、「WEB」というカテゴリのIDが入っています。タームIDやタクソノミIDも同じになっています。ここは今回の目的では判断材料として使いません。
「WEBカテゴリ」に親カテゴリは無いので、関連の情報は空欄もしくは0と表示されます。
今回はスラッグを使って判断します。
「web-design」カテゴリに属する記事にのみバナーを表示したい場合は、以下のように記述します。
1 | if( $cat_slug == ‘web-design’ ) {ここに記述~…} |
実に簡単!
地味な手法ですが、無駄なテンプレートファイルも減ると思うので、細かに使っていきたいものです。
でわ!