サポート » 使い方全般 » カテゴリースラッグをclassにしてカテゴリー毎に背景色を変更

  • 解決済 ismania

    (@ismania)


    タイトルの通り、カテゴリースラッグをidにしてカテゴリー毎に背景色を変更しています。
    <body id="<?php $cat = get_the_category(); echo $cat[0]->slug; ?>">

    このようにしたのですが、カテゴリーに投稿がない場合はidに何も入らないのでスタイルが反映されません。。
    カテゴリーに投稿が無い場合でもスラッグがidに入る方法を考えているのですが、何か良い方法はありますでしょうか?

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • ismaniaさん、こんばんは。

    これはカテゴリーアーカイブページ向けでいいんですよね。
    であれば、get_the_category()の代わりにget_queried_object()を利用するのがいいと思います。ざっくり書くとこんな感じ。
    <body id="<?php $cat = get_queried_object(); echo $cat->slug; ?>">
    get_queried_object()は、メインクエリーの結果を取得するものです。リクエストがカテゴリーアーカイブページであればそのカテゴリー情報を、投稿ページであればその投稿情報を取得できます。詳しくはCodexなどをご覧ください。

    あと、同じ意図であれば次の記述例が一般的です。
    <body <?php body_class(); ?>>
    こうすることで、’category-スラッグ’を含んだclass属性が追加されるようになります。
    各タイプのテンプレートでそのタイプを判別して複数のクラスを追加してくれるので、現在のcssをちょっと修正する必要がありますが、便利だと思います。

    では。

    トピック投稿者 ismania

    (@ismania)

    tmatsuurさん

    早速のご教示ありがとうございます!
    get_queried_object()、初めて知りました。使用した所、思い通りの動作となりました。
    さらに<?php body_class(); ?>も利用してスタイルを細かく条件分岐ができました。
    今後の役にも立ちそうです。ありがとうございました!
    (codexも見て理解を深めたいと思います。)

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カテゴリースラッグをclassにしてカテゴリー毎に背景色を変更」には新たに返信することはできません。