<div class="cat-<?php echo $cat->cat_ID; ?>"></div>
などのようにしてcssで背景画像指定とかではどうでしょう。
h2タグやaタグに直接指定してもいいと思いますね。
もちろんheader.phpへの記述です。is_home()などの分岐もいれませう。
画像ではありませんが、このような感じで使用しています。
<div id="header_title">
<?php if( is_home() ) : // フロントページの場合 ?>
<h2 class="home"><?php bloginfo('name'); ?></h2>
<?php elseif( is_month() ) : // 月別ページの場合 ?>
<h2><a class="archive" href="<?php echo get_settings('home'); ?>/"><?php echo get_the_time('Y年m月の記事'); ?></a></h2>
<?php else : // それ以外の場合
$cat = get_the_category();
$cat = $cat[0];
?>
<h2><a class="cat-<?php echo $cat->cat_ID; ?>" href="<?php echo get_settings('home'); ?>/"><?php echo $cat->cat_name; ?>カテゴリの記事</a></h2>
<?php endif; ?>
</div><!-- END div#header_title -->
shokunさん、お返事ありがとうございます。
ただ今、苦戦しています。
ご教示いただいた内容で、理論的には理解できました。
でも、自分の使っているテーマファイルに上手く組み込めないんです。
この部分
<?php else : // それ以外の場合
$cat = get_the_category();
$cat = $cat[0];
?>
たとえば、
カテゴリーID=3,5,7 ・・Header_1.jpg
カテゴリーID=4,6,8 ・・Header_2.jpg
と指定する場合、$cat = $cat[0]; の部分の記述はどうなりますか?
基本的な質問でごめんなさい。
カテゴリーが多いので、一つ一つ個別に記述するとなると、ものすごい数になってしまうので、どうしたものかと頭を抱えています。
自分のどこかの記述がおかしいんだと思いますが・・悪戦苦闘中です^_^;
せっかくですので、一つずつやって見ましょう;)
<?php
$cat = get_the_category();
echo "<pre>";
print_r($cat);
echo "</pre>";
?>
こんな感じで記述すると・・・
Array
(
[0] => stdClass Object
(
[term_id] => 1
[name] => キャンパス
[slug] => campus
[term_group] => 0
[term_taxonomy_id] => 1
[taxonomy] => category
[description] =>
[parent] => 0
[count] => 12
[object_id] => 79
[cat_ID] => 1
[category_count] => 12
[category_description] =>
[cat_name] => キャンパス
[category_nicename] => campus
[category_parent] => 0
)
)
こんな感じで表示されます。
つまり、配列$catの中の0番目にいろいろと入っているのが分かりますね!
$cat = $cat[0];
はこの0番目だけを取得しているのですね!
あとは好きなデータをキーを指定して取得してあげればいいのです。
で、本題ですが、これは現在表示している記事のカテゴリーを取得しているだけですので、分岐はこれを元に行います。
いろいろな方法がありますが、例えば
switch($cat->cat_ID) {
case 3:
case 5:
case 7:
echo "A";
break;
case 4:
case 6:
case 8:
echo "B";
break;
default:
echo "C";
}
とswitchを使ってみました。
で、本当に本題です;P
私が最初に示したのはこんなに複雑なことをやる内容ではなくて、
<div class="cat-<?php echo $cat->cat_ID; ?>"></div>
こう記述しておくだけで実際には
<div class="cat-1"></div>
などのように変換されて表示されるので、あとはcssで
.cat-1 {
background:url("img/header.gif") no-repeat;
}
を必要なだけ記述でよろしいのでは?ということです;)
shokunさん、度々、ありがとうございました。
ただ、残念ながら、うちのテンプレートファイル(が原因?)では、
<div class=”cat-<?php echo $cat->cat_ID; ?>”></div>
これが動作しなかったんです。
そこで、他のサイトでたまたま見かけたcat_IDの出力の仕方を真似て、
下記の通りにしたら動きました。
でも、私には、詳しい理由は分からないです。 is_singleが曲者?
<?php if(is_single() ) : ?>
<div class=”cat-<?php $cat = get_the_category(); $cat = $cat[0]; {
echo “$cat->cat_ID” ;
} ?>”></div><?php endif; ?>
でも、shokunさんにサジェストいただいた方法で、理論的には納得できました。
「その手があったか」という感じで、他にもいろいろ応用できそうです。
まだまだ勉強しないと分からないことばかりなんですけど、
本当にありがとうございました。
また今後の参考にさせて頂きます(^^)
ただ、残念ながら、うちのテンプレートファイル(が原因?)では、
<div class=”cat-<?php echo $cat->cat_ID; ?>”></div>
これが動作しなかったんです。
is_singleが曲者なのではなくて、$catに値が代入されていないからですね。
$cat = get_the_category();
$cat = $cat[0];
というコードが必要となります。まあつまり、$catという変数の中には最初から中身が入っているわけではなく(wordpressが用意してくれているわけではない)、get_the_categoryで$catの中に入れてあげているのです。
ですので、$cat->cat_IDを使用したいコードよりも上に上記コードを追加してあげてください。
<?php if(is_single() ) : ?>
<div class="cat-<?php $cat = get_the_category(); $cat = $cat[0]; {
echo "$cat->cat_ID" ;
} ?>"></div><?php endif; ?>
このコードでは<?phpから?>までの間に該当のコードがすべて入っていますでしょ?だから前後のif(is_single())は関係ないのですよ。(is_singleは単独記事の場合の条件分岐命令です)
もしかしてPHPのソースは読めませんでしたか・・・?