WordPressのカスタム投稿をタクソノミーのタームで条件分岐する方法

WordPressでカスタム投稿タイプを使用していると、カスタム投稿タイプのシングルページやアーカイブページで条件分岐を行いたい場面が出てきます。特に、タクソノミーのタームによって特定のデザインやコンテンツを出し分けたい場合、どう条件分岐をすればいいのか迷うことがあると思います。

WordPress(ワードプレス)

例えば、シングルページに特定のタクソノミーのタームを持つ投稿が表示された際に、そのタームに応じたカスタムコンテンツを出力したり、アーカイブページで特定のタクソノミーを使って一覧表示をしたい場合です。

今回は、カスタム投稿タイプのシングル・アーカイブページでタクソノミーのタームを使った条件分岐について解説します。

カスタム投稿タイプの条件分岐方法

シングルページでタクソノミーのタームを使った条件分岐を行いたい場合、is_object_in_term()を使って特定のタームが適用されているかどうかを判定します。is_tax()はアーカイブページで使用するため、シングルページには対応していません。

以下は、シングルページで条件分岐を行う基本的な形です。

<?php if (is_object_in_term($post->ID, 'taxonomy', 'term')): ?> // 条件に合致する場合の処理
<?php else: ?> // 条件に合致しない場合の処理
<?php endif; ?>

ここでのポイントは、以下の変数を正しく指定することです。

  • $taxonomy: タクソノミー名を指定します(例: `product_cat`など)。
  • $term: ターム名、タームID、もしくはタームのスラッグを指定します。

これを使えば、シングルページで特定のタームに基づいて条件分岐を行うことができます。

シングルページでのタクソノミーのタームによる条件分岐

例えば、タクソノミー名「product_cat」、ターム名「new」で条件分岐を行いたい場合、以下のように記述します。

<?php if (is_object_in_term($post->ID, 'product_cat', 'new')): ?> // ターム 'new' に属する投稿の場合の処理
<?php else: ?> // ターム 'new' に属さない投稿の場合の処理
<?php endif; ?>

また、同じタクソノミーで複数のタームに対して条件分岐を行いたい場合は、array()を使って複数のタームを指定することが可能です。例えば、ターム「new」と「old」の両方に対応させる場合は次のように記述します。

<?php if (is_object_in_term($post->ID, 'product_cat', array('new', 'old'))): ?> // ターム 'new' または 'old' に属する投稿の場合の処理
<?php else: ?> // それ以外の場合の処理 <?php endif; ?>

このように、シングルページで特定のタクソノミーのタームに基づいて表示内容をカスタマイズすることができます。

アーカイブページでのタクソノミーのタームによる条件分岐

一方、アーカイブページで条件分岐を行いたい場合は、is_tax()を使います。この関数は、タクソノミーアーカイブページや、タクソノミーに関連付けられたカスタム投稿タイプの一覧ページで使用できます。

例えば、アーカイブページで「product_cat」というタクソノミーを条件にして分岐させる場合は、次のように記述します。

<?php if (is_tax('product_cat')): ?> // タクソノミー 'product_cat' のアーカイブページの場合の処理
<?php else: ?> // それ以外の場合の処理
<?php endif; ?>

また、複数のタームに基づいて条件分岐を行いたい場合も、シングルページと同様にarray()を使ってタームを指定することが可能です。

<?php if (is_tax('product_cat', array('new', 'old'))): ?> // ターム 'new' または 'old' に対応するアーカイブページの場合の処理
<?php else: ?> // それ以外の場合の処理
<?php endif; ?>

このコードを使えば、特定のタクソノミーのタームに基づいて、アーカイブページの表示内容を変更することが可能です。

まとめ

WordPressでカスタム投稿タイプやタクソノミーを使う場合、シングルページとアーカイブページでの条件分岐は非常に便利です。特に、特定のタクソノミーのタームに基づいてコンテンツを出し分けることで、投稿ごとに異なる表示内容を簡単に設定できます。

シングルページではis_object_in_term()を使い、アーカイブページではis_tax()を使うという使い分けを覚えておくと、カスタム投稿タイプを柔軟にカスタマイズすることができます。また、複数のタームに対応させる場合も、array()を活用することで効率的に条件分岐を実現できます。

これからWordPressでカスタム投稿タイプやタクソノミーを扱う場合、この記事の内容を参考にして、効率的にカスタマイズを行ってみてください。