MENU

the_taxonomies()

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クラスを適用することで、リンクやテキストの見た目を調整します。

beforeafterで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() は標準のカテゴリーやタグだけでなく、カスタムタクソノミーにも対応しています。

出力形式を細かくカスタマイズできますか?

はい、template 引数を使って、各タクソノミーとその用語の表示形式を自由にカスタマイズできます。

投稿が複数のタクソノミーに属している場合、どのように表示されますか?

各タクソノミーごとに、そのタクソノミーに関連する用語を区切り文字と共にリスト表示します。

まとめ

the_taxonomies() は、特定の投稿に関連するすべてのタクソノミーとその用語をリスト表示するための便利なテンプレートタグです。カスタムタクソノミーを含む全タクソノミーを一度に出力したい場合に最適です。

get_the_taxonomies()the_terms() などの関連タグと組み合わせることで、より柔軟な表示が可能になります。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

This site uses Akismet to reduce spam. Learn how your comment data is processed.

目次