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