1. HOME
  2. WordPress

WordPress 特定のカテゴリー&記事を表示の時にclassをつけたい時

投稿日:2017年8月2日/更新日:2017年8月2日

特定のカテゴリー&記事を表示の時

以下のグローバルナビのようにWordPressの属している記事とカテゴリーの時だけclassをつけて背景を変える場合「in_category」を使用するかと思います。

in_category

wordpressのカテゴリーページとwordpressに属している記事ページでAを表示
他のカテゴリーや他の記事ページでBを表示

<?php if ( in_category('wordpress') ): ?>
    A
<?php else: ?>
    B
<?php endif; ?>

例)

WordPressに属している記事とWordPressのカテゴリーページとページで以下を表示(スラッグ:wordpress)
<li class=”current”><a href=”/wordpress/”>WordPress</a></li>
他の記事ページや他のカテゴリーやで以下を表示
<li><a href=”/wordpress/”>WordPress</a></li>

<?php if ( in_category('wordpress') ): ?>
<li class="current"><a href="/wordpress/">WordPress</a></li>
<?php else: ?>
<li><a href="/wordpress/">WordPress</a></li>
<?php endif; ?>

上記を試したところ確かにWordPressの記事やカテゴリーで有効になりましたが、サイト内の検索結果やアーカイブページでWordPressの記事が一番上の時にも有効になってしまいました。

「WordPressの記事やカテゴリーのみで有効にする」のが目的ですので変更する必要がありそうです。

今回の要件は以下となります。
・WordPressに属している記事で有効
・WordPressのカテゴリーで有効
・上記以外は無効

コード変更

いくつか試したところ以下のコードで解決しました。

<?php if ( (is_single() || is_category()) && in_category('wordpress') ): ?>
<li class="current"><a href="/wordpress/">WordPress</a></li>
<?php else: ?>
<li><a href="/wordpress/">WordPress</a></li>
<?php endif; ?>

上記は記事もしくはカテゴリーページでなおかつWordPressの記事・カテゴリーの時
<li class=”current”><a href=”/wordpress/”>WordPress</a></li>
を表示してそれ以外は
<li><a href=”/wordpress/”>WordPress</a></li>
を表示

少し矛盾している気もしますし、他の記述方法もあるかと思いますが、意図通りの動作はしていますのでこの方法を使用しています。また発見がありましたらお知らせします。

Leave a Reply





PAGE
TOP