WordPressのカスタム投稿タイプで任意のタームが設定されている記事を判定するコードを紹介します。
サブループ内での話です。
アーカイブページかどうかを条件分岐したい場合はis_tax()が使用できます。
また複数のタクソノミーがある場合にいずれかのタクソノミーのタームを持っているかどうかを条件分岐する方法もご紹介します。
使用するWordPressタグはhas_term()です。
目次
特定のタクソノミーの何かしらタームが設定されているのか判別
<?php if(has_term( $term, $taxonomy )): ?>
コード
<?php endif; ?>
<?php if(has_term( '', $taxonomy )): ?>
コード
<?php endif; ?>
$taxonomyにタクソノミーのスラッグかIDを入れて$termにタームのスラッグかIDをいれることで表示中の記事が任意のタームを持っているかどうかを判定できます。
$termを空にすることで$taxonomyで指定したタクソノミーのいずれかのタームに属する記事かどうかを判定できます。
複数のタクソノミーのいずれかのタームの判別
<?php
$taxonomies = get_post_taxonomies();
foreach($taxonomies as $taxonomy):
if(has_term('', $taxonomy)):
?>
コード
<?php break; ?>
<?php endif; endforeach; ?>
breakを利用しました。コードの流れとしては
- get_post_taxonomies()で表示中のカスタム投稿タイプのタクソノミーを取得する
- 取得できたタクソノミーをforeachを使って回す
- もし、何かしらのタームに属しているタクソノミーがあれば、その時点でforeachのループを終了する
OR条件でhas_term(”, $taxonomy)をそれぞれ指定するでもいいですね。
<?php
if(has_term('', $taxonomy1) || has_term('', $taxonomy2)):
?>
コード
<?php endif; ?>
以上です。
最後まで読んでいただきありがとうございます。
コードの間違いや、より効率的な書き方があれば
お問い合わせからご連絡いただけると大変助かります。