the_taxonomies() は、特定の投稿に紐づくすべてのタクソノミーの情報をリスト形式で表示するテンプレートタグです。カテゴリーやタグ、その他のカスタムタクソノミーをまとめて出力するのに役立ちます。
機能の説明
the_taxonomies() は、指定した投稿に関連するすべてのタクソノミーを取得し、HTMLのリスト形式で表示します。特定のタクソノミーに限定せず、投稿に付随する情報を一括して表示する場合に便利です。
シンプルなコード例
<?php the_taxonomies(); ?>このコードは、現在の投稿に関連する全タクソノミーとその用語をリスト表示します。
使い方の解説
the_taxonomies() の基本的な構成は以下の通りです。
the_taxonomies( array $args );$args: オプション引数を指定する配列。例えば出力形式やラベルのカスタマイズが可能です。
引数
before- 
出力全体の前に挿入する文字列
 sep- 
各タクソノミー用語間の区切り文字
 after- 
出力全体の後に挿入する文字列
 template- 
各タクソノミーの出力テンプレートを指定
 
使用例
<?php 
the_taxonomies( array(
    'before'   => '<p>関連タクソノミー: </p><ul>',
    'sep'      => ', ',
    'after'    => '</ul>',
    'template' => '<li>%s: %l</li>',
) ); 
?>before: 出力の前に<p>と<ul>タグを追加。sep: 各タクソノミーの用語をカンマで区切り。after: 出力の後にリストを閉じるための</ul>を挿入。template: 各タクソノミー名 (%s) とそのリンクリスト (%l) を<li>タグで囲んでいます。
特定のタクソノミーだけを表示する
<?php
the_taxonomies([
    'term_template' => '%s', // タクソノミー名だけを出力
    'taxonomy' => 'genre',   // カスタムタクソノミー 'genre' だけを表示
]);
?>taxonomy:特定のタクソノミー(この例ではgenre)だけを表示します。term_template:タクソノミーの出力テンプレートを変更できます。この例では、名前(%s)だけが表示されます。
複数のタクソノミーを制御する場合は、taxonomyに配列も渡せます:
'taxonomy' => ['genre', 'topics']タクソノミーのカスタムテンプレートを指定する
<?php
the_taxonomies([
    'term_template' => '<span class="taxonomy-item"><a href="%2$s">%1$s</a></span>',
]);
?>term_template:各タクソノミーを表示するテンプレートをカスタマイズできます。
%1$s:タクソノミーの名前%2$s:そのタクソノミーのリンクURL
タクソノミーの出力形式をHTMLで自由に構成でき、CSSでスタイリングしやすくなります。
タクソノミーの条件付き出力
<?php
$taxonomies = get_the_taxonomies();
if (!empty($taxonomies)) {
    echo '<ul class="taxonomy-list">';
    foreach ($taxonomies as $taxonomy) {
        echo '<li>' . $taxonomy . '</li>';
    }
    echo '</ul>';
} else {
    echo '<p>No taxonomies available.</p>';
}
?>get_the_taxonomies()関数を使い、タクソノミーの配列を取得します。- タクソノミーが存在する場合のみリストとして表示し、存在しない場合は「No taxonomies available」と出力します。
 
出力に条件を付けたいときにはget_the_taxonomies()を使うと便利です。
the_taxonomies()の出力をCSSでスタイリングする
<?php
the_taxonomies([
    'before' => '<div class="custom-taxonomies">',
    'sep'    => ', ',
    'after'  => '</div>',
]);
?>.custom-taxonomies {
    font-size: 16px;
    color: #333;
}
.custom-taxonomies a {
    color: #0073aa;
    text-decoration: none;
}
.custom-taxonomies a:hover {
    text-decoration: underline;
}the_taxonomies()の出力にCSSクラスを適用することで、リンクやテキストの見た目を調整します。
beforeやafterでHTML要素を指定しておくことで、簡単にCSSを適用でき、デザインを自由に変更可能です。
タクソノミーの翻訳対応
<?php
the_taxonomies([
    'before' => '<div class="taxonomy-list"><p>' . __('Categories and Tags:', 'text-domain') . '</p>',
    'sep'    => ', ',
    'after'  => '</div>',
]);
?>__()関数を使うことで、出力するテキストに翻訳を対応させます。text-domainにはテーマやプラグインのテキストドメインを指定します。
多言語対応が必要な場合には、__()や_e()関数を使い、テキストの翻訳をサポートします。
一緒に使うことが多い関連タグ
get_the_taxonomies()
get_the_taxonomies() は、投稿に関連するタクソノミーを配列形式で取得する関数です。the_taxonomies() と異なり、出力はせず、取得したデータを加工する際に使います。
<?php
$taxonomies = get_the_taxonomies( get_the_ID() );
foreach ( $taxonomies as $taxonomy => $terms ) {
    echo '<p>' . esc_html( $taxonomy ) . ': ' . $terms . '</p>';
}
?>投稿に紐づくすべてのタクソノミーを配列で取得し、ループで回して表示しています。
the_terms()
the_terms() は、特定のタクソノミーに限定してその用語を表示します。
<?php the_terms( get_the_ID(), 'category', 'カテゴリー: ', ', ', '' ); ?>追加情報を取得したい場合
get_the_taxonomies() で取得する情報を加工する
タクソノミー名やリンクをカスタムHTMLで整形することが可能です。
<?php
$taxonomies = get_the_taxonomies( get_the_ID() );
if ( !empty( $taxonomies ) ) {
    echo '<ul>';
    foreach ( $taxonomies as $taxonomy => $terms ) {
        echo '<li>' . esc_html( $taxonomy ) . ': ' . $terms . '</li>';
    }
    echo '</ul>';
}
?>出力できる情報
- name:タクソノミー名
 - slug:タクソノミーのスラッグ
 - description:タクソノミーの説明
 - count:タクソノミーに関連する投稿数
 
想定されるトラブル
タクソノミーが紐づいていない場合、何も表示されない
投稿に関連するタクソノミーが存在しないと出力が空になります。
解決方法
if 文で確認し、代替メッセージを表示します。
<?php
$taxonomies = get_the_taxonomies( get_the_ID() );
if ( empty( $taxonomies ) ) {
    echo '<p>関連するタクソノミーはありません。</p>';
} else {
    the_taxonomies();
}
?>Q&A
まとめ
the_taxonomies() は、特定の投稿に関連するすべてのタクソノミーとその用語をリスト表示するための便利なテンプレートタグです。カスタムタクソノミーを含む全タクソノミーを一度に出力したい場合に最適です。
get_the_taxonomies() や the_terms() などの関連タグと組み合わせることで、より柔軟な表示が可能になります。
コメント