in_category と is_category の違い:WordPress
投稿日:2015年9月23日/更新日:2015年9月23日
1文字違いの in_category と is_category を今回はヘッダー、サイドバー、フッターなど共通のテンプレートに使用してカテゴリーページや記事ページの表示の違いを比較してみます。但し共通テンプレートの場合、記述によりカテゴリーページや記事ページ以外にも影響がありますが今回はこの表示に絞って比較します。
※ in_categoryはパラメータ必須
※ パラメータには管理画面「投稿」→「カテゴリー」の「スラッグ」を設定
in_category
in_category(‘wordpress’) を記載※ in_categoryはパラメータ必須
※ パラメータには管理画面「投稿」→「カテゴリー」の「スラッグ」を設定
<?php if ( in_category('wordpress') ): ?> A <?php else: ?> B <?php endif; ?>
wordpressのカテゴリーページとwordpressに属している記事ページでAを表示
他のカテゴリーや他の記事ページでBを表示
is_category
is_category() の場合(パラメータなし)<?php if ( is_category() ): ?> A <?php else: ?> B <?php endif; ?>
カテゴリーページでAを表示
記事ページでBを表示
<?php if ( is_category('wordpress') ): ?> A <?php else: ?> B <?php endif; ?>
wordpressのカテゴリーページでAを表示
他のカテゴリーと全ての記事ページでBを表示
上記のように is_category でパラメータの設定ではカテゴリーページには反映されましたが記事ページには反映されませんでした。どの箇所に使用するかにより使い分けて設定を行います。
応用例
<?php if ( in_category( array( 'wordpress', 'css' ) ) ): ?> A <?php elseif ( in_category( array( 'web', 'browser' ) ) ): ?> B <?php else: ?> C <?php endif; ?>
記事ページにパラメータが反映されるのが in_category でしたので複数設定する場合は上記の記述となります。
wordpress,cssのカテゴリーページとwordpress,cssに属している記事ページでAを表示
web,browserのカテゴリーページとweb,browserに属している記事ページでBを表示
他のカテゴリーや他の記事ページでCを表示となります。
1記事に対して複数のカテゴリーを設定している場合は条件分岐のコードのより上部に記載されている内容が優先されます。
条件分岐については以下もご覧ください。
WordPress 条件分岐:テンプレートのカスタマイズ
Leave a Reply