【WordPress】複数のタクソノミーで何かしらのタームに属しているときの条件分岐

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を利用しました。コードの流れとしては

  1. get_post_taxonomies()で表示中のカスタム投稿タイプのタクソノミーを取得する
  2. 取得できたタクソノミーをforeachを使って回す
  3. もし、何かしらのタームに属しているタクソノミーがあれば、その時点でforeachのループを終了する

OR条件でhas_term(”, $taxonomy)をそれぞれ指定するでもいいですね。

<?php
if(has_term('', $taxonomy1) || has_term('', $taxonomy2)):
?>
	コード
<?php endif; ?>

以上です。

最後まで読んでいただきありがとうございます。

コードの間違いや、より効率的な書き方があれば
お問い合わせからご連絡いただけると大変助かります。

ページTOP
目次
閉じる