get_the_categoryを使ってwordpressで特定のカテゴリの投稿記事のみに要素を表示する

2014.5.24 Wordpress

今見ている記事(wordpressのデフォルトの投稿など)が属するカテゴリーごとにサイドバーの項目の表示を分けたいときや、バナーの表示を変更するのにも使えます。

get_the_category()で投稿記事のカテゴリ関連の情報を取得

get_the_category:WordPress私的マニュアル

まずは、メンバ変数で必要な要素を取り出せる状態にします。

 $cat = get_the_category();
$cat = $cat[0];

get_the_category()の()内には投稿のIDが入ります。
が、省略した場合は、現在表示している投稿の情報を取得します。

get_the_category返り値のメンバ変数

ひと通り取り出して、変数に代入してみます。

$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 ‘<p>’ . $cat_name . ‘</p>’;とかで出力します。

pare
例に使った写真の記事→WEBサイトの背景に使えるテクスチャ素材サイト8+1種!

ここで注意したいのが、タクソノミ名を出力するはずの「$cat_taxonomy = $cat->taxonomy」ですが、今回のように、投稿ページの「カテゴリ」に属する場合、かならず、返り値は「category」になるそうです…

その下の「$cat_id = $cat->cat_ID」には、「WEB」というカテゴリのIDが入っています。タームIDやタクソノミIDも同じになっています。ここは今回の目的では判断材料として使いません。

「WEBカテゴリ」に親カテゴリは無いので、関連の情報は空欄もしくは0と表示されます。

今回はスラッグを使って判断します。
「web-design」カテゴリに属する記事にのみバナーを表示したい場合は、以下のように記述します。

if( $cat_slug == 'web-design' ) {ここに記述~…}

実に簡単!
地味な手法ですが、無駄なテンプレートファイルも減ると思うので、細かに使っていきたいものです。

 

でわ!

プロフィール

東京でWebデザイナー・コーダーとして、フロントエンド的なことからグラフィックデザイン的なことをして、ごにょごにょと小さく活動中。Webクリエイターでは珍しい(?) HIPHOP, R&B好き。休日はよくカフェや漫画喫茶に出向いたりパン屋に行ったり、主に散歩しています。だいたいラーメンを食べて帰ってくる、そんな過ごし方です(都内のオススメ散歩コース募集中!)。デザインのトレンドやデザイン思考、HTML、CSSからSASS、Javascript、Wordpress構築などコーディングのTIPSなどをブログにアップしていきます。その他のことはtwitter( @satohmsys )まで。