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()
などの関連タグと組み合わせることで、より柔軟な表示が可能になります。
コメント