WordPressのカスタマイズにおいて「get_the_category」テンプレートタグを使うと、カテゴリーによって「画像とタイトルで一覧を表示」「タイトルのみ表示」「画像とタイトルと本文の抜粋を表示」などの表示内容を変更することもできます。
カテゴリーによって出力されるクラス名を変えておくことにより、スタイルシートでカテゴリーごとにデザインを変えてしまうなんていうこともできてしまいます。
カテゴリー情報の取得と変数への代入
<?php $category = get_the_category(); $cat_id = $category[0]->term_id; $cat_name = $category[0]->name; $cat_slug = $category[0]->category_nicename; $cat_count = $category[0]->count; ?>
まず、「get_the_category();」でカテゴリー情報を取得して、変数 $category に代入します。$category の中身がどのようになっているのかを見てみましょう。
$category = get_the_category(); の次の行に以下を記載し、変数の中身を出力します。
※PHPの echo は配列に対応していないので、配列を表示させるには print_r を使います。
下記のようなデータが返ってきました。
Array ( [0] => stdClass Object ( [term_id] => 16 [name] => Mac [slug] => mac [term_group] => 0 [term_taxonomy_id] => 16 [taxonomy] => category [description] => [parent] => 0 [count] => 4 [object_id] => 148 [filter] => raw [cat_ID] => 16 [category_count] => 4 [category_description] => [cat_name] => Mac [category_nicename] => mac [category_parent] => 0 ) )
実際は改行がない繋がったデータになっていますが、見やすくするためにここでは改行を入れています。
カテゴリー番号16がMacになっており、「category_count」にはカテゴリーに所属している投稿数が4件と表示されています。
後は、サイト上に表示するために、下記の情報をひとつずつ取得していけば良いですね。
上記の各項目を変数に入れるには以下のように記載します。
各項目にどのようなデータが入っているかを知るには以下の表をご覧ください。
[table id=22 /]
$cat_id = $category[0]->term_id;
$cat_name = $category[0]->name;
$cat_slug = $category[0]->category_nicename;
$cat_count = $category[0]->count;
という形で変数に対応する情報が入っているので、表示させたい場所に以下のソースを記載します。
<!-- カテゴリーIDを表示 --> <?php echo $cat_id; ?> <!-- カテゴリー名を表示 --> <?php echo $cat_name; ?> <!-- カテゴリースラッグを表示 --> <?php echo $cat_slug; ?> <!-- 件数を表示 --> <?php echo $cat_count; ?>
これで各情報がブラウザ上に出力されます。
カテゴリー別にデザインを変更する方法
応用編としてカテゴリーごとにデザインを変更する方法を考えてみましょう。
カテゴリー別にクラス名を変更していけばスタイルシート側でデザインを変更できますよね。
<?php <div class="cat-<?php echo $cat_id; ?> "> <?php echo $cat_name; </div> ?>
↓プログラム実行結果
Mac
</div>
このようにクラス名を cat-数字 の形で出力することができました。
あとはスタイルシートで
.cat-16{ font-size:1.6em; font-weight:bold; background-color;#f2f2f2; }
のように好きにデザインすればOKです。
このようなクラスの出力とスタイルシートの設定はいろいろな場面で使えるのでしっかり覚えましょう!
single_cat_titleで簡単にカテゴリータイトルを取得・表示
get_the_category() ではカテゴリー情報の詳細を取得することができましたが、現在開いているページのカテゴリー名を取得・表示したい場合は single_cat_title()を使うともっと簡単にカテゴリー名を表示できます。
書式は下記のようになります。
$prefixにはタイトルの前に出力するテキストを指定
$displayはtrueを設定。falseを設定するとタイトルを表示しない(変数に入れる時に利用)
実例を見た方がわかりやすいと思いますので、以下にソースと実行結果を記載します。
<?php single_cat_title('カテゴリー名:',true) ?>
たったこれだけで、
↓プログラム実行結果
カテゴリー名が出力できてしまいました。
第二引数にfalseを指定することにより、PHPの変数にカテゴリー名を入れることができます。
<?php $cat_name = single_cat_title('', false); echo 'カテゴリーは' . $cat_name . 'です'; ?>
↓プログラム実行結果
これを使えば $cat_name という変数にカテゴリー名が入っているので、前後に文字列をつけたりすることができます。
カテゴリー関連のテンプレートタグ
カテゴリー関連のテンプレートタグを幾つか紹介します。
WordPress Codex日本語版 テンプレートタグに詳細が載っているので必要な時はリンク先を覗いてみましょう。
[table id=23 /]