記事のカテゴリとタグで表示を出し分けるWordPressテンプレートタグ in_category, has_tag

アドセンスやアイキャッチなど、投稿するタイプによって表示を出し分けたい場合があります。
WordPressのテンプレートタグを使えば、特定のタグを付けた投稿は非表示にして、それ以外では表示するという「条件分岐」をすることができます。
sponsored link
カテゴリによって条件分岐をする
カテゴリによって条件分岐をしたい場合はin_category
というテンプレートタグを使います。
特定のカテゴリだけで表示したい場合。
1 2 3 |
<?php if( in_category( 'カテゴリのスラッグ' )) : ?> このカテゴリの場合に表示するもの <?php endif; ?> |
特定のカテゴリで非表示、それ以外のタグで表示したい場合。
1 2 3 4 5 6 7 |
<?php if( in_category( 'カテゴリのスラッグ' )) : ?> ここは空白 <?php else: ?> それ以外のカテゴリで表示するものを入力する <?php endif; ?> |
複数のカテゴリで非表示、それ以外のタグで表示したい場合。
1 2 3 4 5 6 7 |
<?php if( in_category( array( 'カテゴリのスラッグ', 'カテゴリのスラッグ' ))) : ?> ここは空白 <?php else: ?> それ以外のカテゴリで表示するものを入力する <?php endif; ?> |
この中で出てくる「スラッグ」は管理画面の[投稿][タグ]にあるスラッグです。
似たテンプレートタグにis categoryもありますが、こちらはカテゴリのアーカイブページが表示されているかという意味になるので注意しましょう。in_category
はそのカテゴリの投稿ページが表示されていたらという意味になります。
タグによって条件分岐をする
タグによって条件分岐をしたい場合はhas_tag
というテンプレートタグを使います。
特定のタグだけで表示したい場合。
1 2 3 |
<?php if( has_tag( 'タグのスラッグ' )) : ?> このタグの場合に表示するもの <?php endif; ?> |
特定のタグで非表示、それ以外のタグで表示したい場合。
1 2 3 4 5 6 7 |
<?php if( has_tag( 'タグのスラッグ' )) : ?> ここは空白 <?php else: ?> それ以外のタグで表示するものを入力する <?php endif; ?> |
複数のタグで非表示、それ以外のタグで表示したい場合。
1 2 3 4 5 6 7 |
<?php if( has_tag( array( 'タグのスラッグ', 'タグのスラッグ' ))) : ?> ここは空白 <?php else: ?> それ以外のタグで表示するものを入力する <?php endif; ?> |
似たテンプレートタグにis tagもありますが、こちらはタグのアーカイブページが表示されているかという意味になるので注意しましょう。has_tag
はそのタグの投稿ページが表示されていたらという意味になります。
in_category
とhas_tag
は関数こそ違いますが、使い方や使う場面は同じですね。
僕の場合は特定の投稿だけアイキャッチ画像を非表示にしたいと思って調べていました。
レイアウトをガラッと変えたり、アドセンスなどの広告を出し分けたり使える場面は多いと思います。
今回参考にさせてもらったのはWebデザインレシピさん。ここがいちばん分かりやすくまとめられていました。