the_taxonomies()

the_taxonomies()
目次

the_taxonomies()の用途

the_taxonomies() は、投稿に紐づくすべてのタクソノミー(カテゴリー・タグ・カスタムタクソノミーなど)を一覧表示する関数です。
投稿に関連づけられた各タクソノミーと、そのタームをまとめて自動的に出力できます。

the_taxonomies()の基本構文

the_taxonomies( array $args = array() )

the_taxonomies()のパラメータ

$args という配列でオプションを設定します。
よく使う主なキーは次の通りです。

キー説明
post投稿オブジェクト(通常は省略してループ中の投稿に自動適用)
before全体の先頭に出力する文字列
sep各タクソノミーを区切る文字列
after全体の末尾に出力する文字列
template各タクソノミー出力のテンプレート(後述)

the_taxonomies()のデフォルトのテンプレート

各タクソノミーは以下のように表示されます。

タクソノミー名: タームリンク1, タームリンク2

例えば、

カテゴリー: ニュース, イベント
タグ: キャンペーン, 発表

the_taxonomies()の基本例

ループ中で単純にすべてのタクソノミーを表示

the_taxonomies();

the_taxonomies()の装飾をつける例

全体を <div> で囲む

the_taxonomies( array(
    'before' => '<div class="taxonomies">',
    'after'  => '</div>'
) );

the_taxonomies()の区切りを変更する例

タクソノミーの間を改行にする

the_taxonomies( array(
    'sep' => '<br>'
) );

the_taxonomies()のテンプレートをカスタマイズ

template を指定すると表示の形式を変えられます。

the_taxonomies( array(
    'template' => '%s は %l',
    'sep'      => '<br>'
) );

この場合 %s がタクソノミーラベル、%l がリンクリストに置き換えられます。

例の出力:

カテゴリー は ニュース, イベント
タグ は キャンペーン, 発表

タームがない場合

タームが紐づいていないタクソノミーは表示されません。

the_taxonomies()の類似関数との比較

関数特徴
the_taxonomies()投稿に紐づく全タクソノミーをまとめて出力
the_terms()特定の1つのタクソノミーだけを出力
get_the_term_list()特定タクソノミーの文字列を取得
get_the_terms()タームオブジェクト配列を取得

the_taxonomies()の使い分けのポイント

  • 投稿に複数のタクソノミーがあり、全部まとめて表示したい場合 → the_taxonomies()
  • 特定のタクソノミーだけ出したい場合 → the_terms()get_the_term_list()
  • タームを自由にループ処理したい場合 → get_the_terms()

the_taxonomies()の基本サンプル

WordPressループ内で、投稿に紐づくすべてのタクソノミーを表示する例

<?php
if ( have_posts() ) :
  while ( have_posts() ) : the_post();
    the_title('<h2>', '</h2>');
    the_content();
    the_taxonomies();
  endwhile;
endif;
?>

出力例(タクソノミーがカテゴリーとタグの場合)

カテゴリー: <a href="...">ニュース</a>, <a href="...">イベント</a>
タグ: <a href="...">キャンペーン</a>, <a href="...">発表</a>

テンプレートをカスタマイズ

template を指定して表示形式を変える例

the_taxonomies(array(
  'template' => '<strong>%s:</strong> %l',
  'sep'      => ' | '
));

出力例

<strong>カテゴリー:</strong> ニュース, イベント | <strong>タグ:</strong> キャンペーン, 発表

HTMLで囲む

全体を <div> でラップする例

the_taxonomies(array(
  'before' => '<div class="post-taxonomies">',
  'after'  => '</div>',
  'sep'    => '<br>'
));

出力例

<div class="post-taxonomies">
カテゴリー: ニュース, イベント<br>タグ: キャンペーン, 発表
</div>

カスタムタクソノミーも含める例

例えば「ジャンル(genre)」というカスタムタクソノミーがある場合でも、何も特別な設定をしなくても自動的に含まれます。

the_taxonomies();

出力例

カテゴリー: ニュース, イベント
タグ: キャンペーン, 発表
ジャンル: ミステリー, ファンタジー

テンプレートで区切りを変える例

「、」で区切りたい場合は template ではなく、ターム同士の区切りは get_the_term_list() で調整するほうが柔軟ですが、the_taxonomies()ではターム間の区切りはデフォルトでカンマです。もし完全に自由にタームの区切りやHTMLを変えたい場合は get_the_terms() を使い、ループで自作する方法がおすすめです。

出力を一切しないでタクソノミーを取得したい場合

the_taxonomies()必ず表示します
出力を取得して変数に入れることはできません。
どうしても出力を制御したい場合は get_the_taxonomies() を使うか、 get_the_terms() でオブジェクトを取得して自作する方法になります。

応用: 条件分岐

「カテゴリーが付いている場合だけ表示する例」

if ( get_the_terms( get_the_ID(), 'category' ) ) {
  the_taxonomies(array(
    'template' => '%s: %l',
    'sep'      => '<br>'
  ));
}
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

初めてホームページを作成したのは1996年。
2000年よりフリーランスで主に中小企業、学校、各種公的団体、個人事業主のWordPressを活用したホームページ制作を行っています。WordPressテーマはそれぞれのクライアントに合わせて作成しています。
WordPressを活用したサイト運営のための情報発信をしていきます。

目次