
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>'
));
}